为了账号安全,请及时绑定邮箱和手机立即绑定

在 pandas 数据框中找到上一行

在 pandas 数据框中找到上一行

慕雪6442864 2022-04-23 17:19:34
我的数据框可以这样复制:import pandas as pd link = 'https://raw.githubusercontent.com/timothylombard/RSB/master/RSBdata.csv'df = pd.read_csv(link)df['Date'] =  pd.to_datetime(df['Date'])df.set_index('Date', inplace=True) 这个数据框的图片是这样的——我想做的事确定 df['Connections'] 的值与上一行相比发生变化的行。识别更改之前的行。然后我想比较和报告更改行和更改行之前的列值差异。看图,我想比较 2018-01-13 和 2017-01-10 索引的数据到目前为止,我已经能够使用 .shift 添加新列df['PriorConnections'] = df['Connections'].shift()然后添加具有差异值的另一列,如下所示:df['Connections_Diff'] = df['Connections'] - df['PriorConnections']我还可以通过使用来识别更改行 -cr = df.loc[df.Connections_Diff > 0] df.loc[cr]如何找到 df.loc[cr] 之前的行?
查看完整描述

2 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

您可以创建一个包含 changed_rows 的所有索引的列表。


所以,你可以这样做:


list_changed_rows = []


for i in range(1, df.shape[0]):

    if df.iloc[i,2] != df.iloc[i-1,2]:

        list_changed_rows.append(i)

要分析它们,您可以这样做:


for i in list_changed_rows:

    row_before = df.iloc[[i-1]]

    row_changed = df.iloc[[i]]


    # code


查看完整回答
反对 回复 2022-04-23
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

你可以这样检查吗?


>> df = pd.DataFrame({'Col1': [10, 20, 10, 15, 15],

                   'Col2': [13, 23, 18, 33, 48],

                   'Col3': [17, 27, 22, 37, 52]})

>> series_to_check = df['Col1']

>> [(i, i-1) for i in range(1,len(series_to_check)-1) if series_to_check[i]!=series_to_check[i-1] ]

>> [(1, 0), (2, 1), (3, 2)]

>> # returns a list of tuples [(`changed_row_index`, `previous_row_index`)]

它本质上检查系列中的每个项目及其先前的数据。


查看完整回答
反对 回复 2022-04-23
  • 2 回答
  • 0 关注
  • 423 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号