Pandas df按组计算日期

时间:2016-04-04 16:01:36

标签: python date pandas

我在尝试做一些我认为非常简单的事情时遇到了很多麻烦,但我找不到一个简单的方法。

我有一个具有以下结构的df:

Site                      category
Date                datetime64[ns]
Test_Reading                 int64

Site    Date     Test_Reading
A   2011-10-16   100
A   2011-10-20   70
A   2011-11-01   150
A   2011-11-15   110
B   2011-10-16   17
B   2011-10-17   20
B   2011-10-18   55
B   2011-10-20   155
B   2011-10-24   70
C   2011-10-01   55
C   2011-11-01   60
C   2011-12-01   110

我想计算每个网站的测试读数之间的平均天数。我只是处理日期数据类型有很多问题。

理想情况下,我想创建一个新的df,只显示以下内容:

Site   mean_lag_days
A        x
B        x
C        x

1 个答案:

答案 0 :(得分:4)

IIUC然后你想在{Date'上groupby并应用lambda来计算行之间的diff并取mean

In [18]:
df.groupby('Site')['Date'].apply(lambda x: x.diff().mean())

Out[18]:
Site
A   10 days 00:00:00
B    2 days 00:00:00
C   30 days 12:00:00
Name: Date, dtype: timedelta64[ns]

获得最终的预期结果:

In [20]:
df.groupby('Site')['Date'].apply(lambda x: x.diff().mean()).reset_index().rename(columns={'Date':'Mean_lag_days'})

Out[20]:
  Site    Mean_lag_days
0    A 10 days 00:00:00
1    B  2 days 00:00:00
2    C 30 days 12:00:00