python - 在 Pandas 的数据框中迭代两个连续行的 Pythonic 方法是什么?
问题描述
我想迭代一个数据帧记录,如下伪代码:
for index, row in records.iterrows():
process(row[index-1]['Expected Time'], row[index]['Actual Time'])
whereprocess
是一个具有比较当前记录的“实际时间”和上一行的“预期时间”逻辑的函数。
上面的代码不起作用,因为作为元组的行不允许通过带空格的字符串进行访问。相反,我必须将列/字段的索引用于名称包含空格的那些。这是一种硬代码,不是很容易维护。
我想知道是否有更好的解决方案?
或者,是否可以迭代一对数据帧,如以下伪代码:
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 中实现上述目标?
解决方案
这应该可以解决问题:
records["prev"]=records["Expected Time"].shift(1)
records[["prev", "Actual Time"]].apply(lambda X: process(X["prev"], X["Actual Time"]), axis=1)
推荐阅读
- python - 这个警告是什么意思:期望列表
; 得到 - angular - 路线改变,但出口不是第一次
- database - 从 db 获取数据并使用映射 (orika) 时出错 - ma.glasnost.orika.MappingException
- java - 使用冒泡排序对双向链表进行排序
- scala - 如何在加特林中使用这样的进纸器
- r - 如何在 renderUI 中重新启动 lapply 循环
- azure - 如何缩短 Azure AppInsight 中的数据保留期
- unicode - 使用 OleDB 将旧工具迁移到新的 Windows 版本时出现编码问题
- google-admin-sdk - 如何将 G Sutie Reseller API 的时间从数字转换为准确日期?
- php - 想这样搜索