【发布时间】:2016-02-01 08:43:16
【问题描述】:
我有以下包含 2 列(简化)的熊猫数据框。第一列包含玩家姓名,第二列包含日期(datetime 对象):
player date
A 2010-01-01
A 2010-01-09
A 2010-01-11
A 2010-01-15
B 2010-02-01
B 2010-02-10
B 2010-02-21
B 2010-02-23
我想添加一列diff,它表示每个玩家的时差。结果应如下所示:
player date diff
A 2010-01-01 0
A 2010-01-09 8
A 2010-01-11 2
A 2010-01-15 4
B 2010-02-01 0
B 2010-02-10 9
B 2010-02-21 11
B 2010-02-23 2
第一行有0 表示差异,因为没有更早的日期。第二行显示8,因为2010-01-01 和2010-01-09 之间的差是八天。
问题不在于计算两个datetime 对象之间的日差。我只是不确定如何添加新列。我知道,我必须先创建一个groupby(df.groupby('player')),然后再使用apply(或者可能是transform?)。但是,我被卡住了,因为为了计算差异,我需要参考应用函数中的 上一行,如果可能的话,我不知道该怎么做。
非常感谢。
更新:
在尝试了以下两种建议的解决方案后,我发现它们不适用于我的代码。经过一番头疼后,我发现我的数据有重复的索引。因此,在我发现我有重复的索引后,一个简单的df.reset_index() 解决了我的问题并且建议的解决方案有效。由于两种解决方案都有效,但我只能将一个标记为正确,因此我将选择更简洁/更短的解决方案。不过,谢谢你们!
【问题讨论】:
标签: python pandas dataframe apply