【问题标题】:What's the Pythonic way to iterate over two consecutive rows in a dataframe of Pandas?在 Pandas 的数据框中迭代两个连续行的 Pythonic 方法是什么?
【发布时间】:2020-04-19 08:59:53
【问题描述】:

我想遍历一个数据帧记录,如下伪代码:

for index, row in records.iterrows():
    process(row[index-1]['Expected Time'], row[index]['Actual Time'])

其中process是一个函数,其逻辑是比较当前记录的“实际时间”和上一行的“预期时间”。

上面的代码不起作用,因为作为元组的行不允许通过带有空格的字符串进行访问。相反,我必须将列/字段的索引用于名称包含空格的那些。 这是一种硬代码,不是很容易维护。

不知道有没有更好的解决方案?

或者,是否可以遍历一对数据帧,如以下伪代码:

current_df = records[1:]
previous_df = records[:-1]

for current_record, previous_record in (current_df, previous_df):
    process(previous_record['Expected Time'], current_record['Actual Time'])

使用相同的数据框,一个删除了第一行,另一个删除了最后一行。它在同一索引处比较当前行和上一行。

如何在 Python 中实现上述目标?

【问题讨论】:

标签: python pandas


【解决方案1】:

这应该可以解决问题:

records["prev"]=records["Expected Time"].shift(1)
records[["prev", "Actual Time"]].apply(lambda X: process(X["prev"], X["Actual Time"]), axis=1)

【讨论】:

猜你喜欢
  • 2015-09-11
  • 2013-04-12
  • 1970-01-01
  • 2013-01-14
  • 2020-10-05
  • 2020-12-18
  • 1970-01-01
  • 1970-01-01
  • 2017-02-08
相关资源
最近更新 更多