【发布时间】:2018-08-10 20:30:05
【问题描述】:
我有一个包含一些日期的数据框,以及我从 csv 文件中读取的每个日期的关联数据(该文件相对较小,大约有 10,000 行和约 10 列):
memid date a b
10000 7/3/2017 221 143
10001 7/4/2017 442 144
10002 7/6/2017 132 145
10003 7/8/2017 742 146
10004 7/10/2017 149 147
我想在此数据框中添加一列“date_diff”,用于计算每个日期与上一个最近日期之间的天数(行始终按日期排序):
memid date a b date_diff
10000 7/3/2017 221 143 NaN
10001 7/4/2017 442 144 1
10002 7/6/2017 132 145 2
10003 7/8/2017 742 146 2
10004 7/11/2017 149 147 3
我很难找到创建此“date_diff”列的好方法,因为在使用 pandas/numpy 时,逐行迭代往往会令人不悦。有没有一种简单的方法可以在 python/pandas/numpy 中创建此列,还是在将 csv 读入我的脚本之前完成这项工作更好?
谢谢!
编辑:感谢 jpp 和 Tai 的回答。它涵盖了原始问题,但我有一个跟进:
如果我的数据集每个日期都有多行怎么办?有没有一种方法可以轻松检查每组日期之间的差异以产生如下例所示的输出?如果每个日期都有固定的行数会更容易吗?
memid date a b date_diff
10000 7/3/2017 221 143 NaN
10001 7/3/2017 442 144 NaN
10002 7/4/2017 132 145 1
10003 7/4/2017 742 146 1
10004 7/6/2017 149 147 2
10005 7/6/2017 457 148 2
【问题讨论】:
-
使用从 datetime 导入的 timedelta。阅读this