【发布时间】:2020-05-28 23:41:06
【问题描述】:
我的数据框如下所示:
df:
ID DATE
KV 26/09/1969 0:00:00
KV 27/05/1970 0:00:00
KV 17/01/1989 0:00:00
KV 27/05/1970 0:00:00
DV 24/07/1984 0:00:00
DV 11/03/2015 0:00:00
DV 4/12/2015 0:00:00
GV 26/10/2005 0:00:00
GV 11/10/2017 0:00:00
GV 11/10/2017 0:00:00
现在我想为每个 ID 创建过去 10 年的平均年龄列(使用 groupby)。
期望的输出:
Average Age
ID 2020 2019 2018 2017 2016 2015 2014 2013 2012 2011
KV 45.5 44.5 43.5 42.5 41.5 40.5 39.5 38.5 37.5 36.5
DV 15.3 14.3 13.3 12.3 11.3 31 30 29 28 27
GV 3 2 1 0 0 0 0 0 0 0
可以通过从日期列中减去过去 10 年来计算年龄。我使用以下命令计算 2020 年的年龄:
df.groupby('ID')['Date'].agg(lambda x:pd.datetime('01-04-2020')-x['Date'])
但是,我无法弄清楚如何使用单个命令计算过去 10 年的年龄值。谁能帮我解决这个问题?
【问题讨论】:
-
为什么 DV 的年龄在 2015-16 之间减少了?是错字吗?
标签: python python-3.x pandas pandas-groupby