如何按日期对数据框进行分组以获取每个组的ID数组?

时间:2020-01-24 08:37:13

标签: python pandas

这是我的数据框:

id - title - publish_up - date

1  - Exampl- 2019-12-1  - datetime

...

我通过应用

创建了一个日期列
df['date'] = pd.to_datetime(df['publish_up'], format='%Y-%m-%d')

我是python的新手,我正在尝试学习熊猫。 我想做的是为一年中的每一天创建组。

数据框包含一年内的数据,因此从理论上讲,应该有365个组。

然后,我需要为每个组获取一组ID。

示例:

[{date:'2019-12-1',ids:[1,2,3,4,5,6]},{date:'2019-12-2',ids:[7,8,9,10,11,12,13,14]},...]

谢谢

1 个答案:

答案 0 :(得分:2)

如果要在输出列表的字符串中设置日期格式,则不必转换为日期时间,只需按GroupBy.apply每组创建列表,按DataFrame.reset_index将其转换为DataFrame并最后创建列表DataFrame.to_dict的字典数量:

print (df)
   id   title publish_up      date
0   1  Exampl  2019-12-2  datetime
1   2  Exampl  2019-12-2  datetime
2   2  Exampl  2019-12-1  datetime

#if necessary change format 2019-12-1 to 2019-12-01
#df['publish_up'] = pd.to_datetime(df['publish_up'], format='%Y-%m-%d').dt.strftime('%Y-%m-%d')

print (df.groupby('publish_up')['id'].agg(list).reset_index())
  publish_up      id
0  2019-12-1     [2]
1  2019-12-2  [1, 2]

a = df.groupby('publish_up')['id'].agg(list).reset_index().to_dict('r')
print (a)
[{'publish_up': '2019-12-1', 'id': [2]}, {'publish_up': '2019-12-2', 'id': [1, 2]}]
相关问题