在 pandas 数据框中找到上一行

我的数据框可以这样复制:


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) 

这个数据框的图片是这样的——

http://img3.mukewang.com/6263c4b90001aba319260653.jpg

我想做的事

  1. 确定 df['Connections'] 的值与上一行相比发生变化的行。

  2. 识别更改之前的行。

然后我想比较和报告更改行和更改行之前的列值差异。看图,我想比较 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] 之前的行?


慕雪6442864
浏览 424回答 2
2回答

白衣染霜花

您可以创建一个包含 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

慕码人2483693

你可以这样检查吗?>> 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`)]它本质上检查系列中的每个项目及其先前的数据。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python