首页 > 解决方案 > 如何使用 Python Pandas 将列的日期聚合到每个人的日期列表中?

问题描述

我有以下数据,每行每个 ID 和 DATE。具有相同 ID 的人可以占用多行,因此可以占用多个日期。我想将它聚合到每行一个人(或 ID)中,日期将聚合到日期列表中

由此

ID   DATE
1    2012-03-04
1    2013-04-15
1    2019-01-09
2    2013-04-09
2    2016-01-01
2    2018-05-09

对此

ID   DATE
1    [2012-03-04, 2013-04-15, 2019-01-09]
2    [2013-04-09, 2016-01-01, 2018-05-09]

这是我的尝试

df.sort_values(by=['ID', 'DATE'], ascending=True, inplace=True)
df = df[['ID', 'DATE']]
df_pivot = df.groupby('ID').aggregate(lambda tdf: tdf.unique().tolist())
df_pivot = pd.DataFrame(df_pivot.to_records())

问题是它返回这样的东西

ID   DATE
1    [1375228800000000000, 1411948800000000000, 1484524800000000000]
2    [1524528000000000000, 1529539200000000000, 1529542200000000000]

这是什么日期格式?我似乎找不到将其转换回典型日期格式的正确函数。

标签: python-3.xpandasdatetimeaggregate

解决方案


很多方法... agg 首选,因为 apply 可能非常慢

df.groupby('ID')['DATE'].agg(list)

Or

df.groupby('ID')['DATE'].apply(lambda x: x.to_list())

推荐阅读