在行中匹配单元格上聚合数据并计算日期差异

时间:2018-04-17 08:26:27

标签: python pandas

我有一个Dataframe:

d = {'User': ['A', 'A', 'A', 'B', 'B', 'C', 'C', 'C', 'C'], 'Date' : ['2017-10-21', '2017-10-24', '2017-10-29', '2017-09-30', '2017-10-23', '2017-10-31', '2017-11-02', '2017-11-03', '2017-11-03']} df = pd.Dataframe(data=d)

看起来像:

User Date A 2017-10-21 A 2017-10-24 A 2017-10-29 B 2017-09-30 B 2017-10-23 C 2017-10-31 C 2017-11-02 C 2017-11-03 C 2017-11-03

我想要的是添加另一列来查找每个用户的日期之间的差异:从最早的日期(因此差异为0)开始到下一个日期,以及下一个日期到之后的日期,依此类推。

Dataframe将如下所示:

User Date Difference A 2017-10-21 0 A 2017-10-24 3 A 2017-10-29 5 B 2017-09-30 0 B 2017-10-23 23 C 2017-10-31 0 C 2017-11-02 2 C 2017-11-03 1 C 2017-11-03 0

注意:用户和日期已经在原始数据框中排序。

1 个答案:

答案 0 :(得分:1)

我认为需要groupbydiff,转换timedeltas添加days

#if necessary sorting
#df = df.sort_values(['User','Date'])

df['Difference'] = df.groupby('User')['Date'].diff().dt.days.fillna(0).astype(int)
print (df)
  User       Date  Difference
0    A 2017-10-21           0
1    A 2017-10-24           3
2    A 2017-10-29           5
3    B 2017-09-30           0
4    B 2017-10-23          23
5    C 2017-10-31           0
6    C 2017-11-02           2
7    C 2017-11-03           1
8    C 2017-11-03           0