将数据帧单元格值与先前单元格值进行比较

时间:2017-11-27 03:05:57

标签: python pandas

我正在尝试遍历pandas数据帧的每一行,并将某个单元格的值与前一行中的相同单元格进行比较。我想这可以使用.shift()完成,但它返回一个系列而不是单元格值。

我已经看到groupbyiloc的一些用法用于访问单元格的值但不能用于迭代比较,并使用某种递增计数器方法或手动存储每个单元格的值和那么比较并不是很有效。

这是我想象的可行,但没有快乐。

for index, row in df.iterrows():
   if row['apm'] > df['apm'].shift(1):
      # do something

2 个答案:

答案 0 :(得分:0)

您可以创建一个新列(例如flag)来指示布尔检查是否为真。

df = df.assign(flag=df['apm'].gt(df['apm'].shift()))

然后,您可以根据此列的值执行操作。

答案 1 :(得分:0)

Array Walk Time: 0.045436
Array Map Time: 0.047619 

返回一个系列,其中包含每行的先前值,第一行中的None除外。 因此,代码

df['apm'].shift(1)

将返回包含boolen值的系列,每行也会返回df['apm'] > df['apm'].shift(1) True。 这对你的任务来说足够了吗?