我正在尝试遍历pandas数据帧的每一行,并将某个单元格的值与前一行中的相同单元格进行比较。我想这可以使用.shift()
完成,但它返回一个系列而不是单元格值。
我已经看到groupby
和iloc
的一些用法用于访问单元格的值但不能用于迭代比较,并使用某种递增计数器方法或手动存储每个单元格的值和那么比较并不是很有效。
这是我想象的可行,但没有快乐。
for index, row in df.iterrows():
if row['apm'] > df['apm'].shift(1):
# do something
答案 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
。
这对你的任务来说足够了吗?