我在尝试做一些我认为非常简单的事情时遇到了很多麻烦,但我找不到一个简单的方法。
我有一个具有以下结构的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
答案 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