【发布时间】:2022-01-17 23:13:15
【问题描述】:
我一直在使用具有以下格式的数据框(实际表有更多的行(id)和列(value_3、value_4 等)):
对于每个 id,如果这是该 id 的第一个条目,status 列的值为“new”,如果 value_1、value_2 中的任何一个列发生了更改,则值为“modified”到它们之前的值。我想为表中所做的任何更改创建一个日志,特别是我希望上面给定数据的结果格式是这样的:
理想情况下,我想避免使用循环,那么您能否建议任何更有效的pythonic方法来实现上述格式?
我在这里看到了这个问题的答案:Determining when a column value changes in pandas dataframe
这部分完成了我想要的工作(使用shift 或diff)来识别发生变化的案例,我想知道这是否是我的案例的最佳构建方式,或者是否有一种更有效的方法来做到这一点并加快进程。理想情况下,我希望在value_1、value_2 等列中都可以使用数字和非数字值。
创建第一张图片示例数据的代码:
import pandas as pd
data = [[1,2,5,'new'], [1,1,5,'modified'], [1,0,5,'modified'],
[2,5,2,'new'], [2,5,3,'modified'], [2,5,4,'modified'] ]
df = pd.DataFrame(data, columns = ['id', 'value_1', 'value_2',
'status'])
df
非常感谢您的任何建议/帮助!
【问题讨论】:
-
请提供不在图片中的数据
-
已编辑问题以包含生成数据的代码@BENY