这是我的数据框:
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]},...]
谢谢
答案 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]}]