我有一个数据框,如下所示:
Year Month S_ID Channel_Name Interaction Doc_ID Feed_ID
2018 2 67 WhiteCoats 1 152 5776
2018 2 67 WhiteCoats 4 152 5776
2018 2 67 WhiteCoats 4 152 6046
2018 2 67 Beats 4 152 6117
2018 2 84 Beats 4 27261 6286
2018 2 84 Beats 1 9887 6286
我已将数据与列分组:
年,月,S_ID,频道名称,互动
码:
df.groupby(['Year','Month',S_ID,Channel_Name,Interaction])
但是我想要一个包含字典列表的新列Doc_ID,Feed_ID列
结果框架应如下所示:
Year Month S_ID Channel_Name Interaction Dictionary
2018 2 67 WhiteCoats 1 [{'Doc_id':152,'Feed_ID':5776}]
2018 2 67 WhiteCoats 4 [{'Doc_id':152,'Feed_ID':5776}]
2018 2 67 Beats 4 [{'Doc_id':152,'Feed_ID':6117}]
2018 2 84 Beats 4 [{'Doc_id':27261,'Feed_ID':6286},{'Doc_id':9887,'Feed_ID':6286}]
目前,我只能创建一个列表:
df.groupby(['Year','Month',S_ID,Channel_Name,Interaction])[['Doc_id','Feed_id']].apply(lambda x: x.values.tolist())
但是如何创建词典列表呢?
最佳答案
通过to_dict
将值转换为lambda函数中的字典:
df1 = (df.groupby(['Year','Month','S_ID','Channel_Name','Interaction'])['Doc_ID','Feed_ID']
.apply(lambda x: x.to_dict('r'))
.reset_index(name='Dictionary'))
print (df1)
0 2018 2 67 Beats 4
1 2018 2 67 WhiteCoats 1
2 2018 2 67 WhiteCoats 4
3 2018 2 84 Beats 1
4 2018 2 84 Beats 4
Dictionary
0 [{'Doc_ID': 152, 'Feed_ID': 6117}]
1 [{'Doc_ID': 152, 'Feed_ID': 5776}]
2 [{'Doc_ID': 152, 'Feed_ID': 5776}, {'Doc_ID': ...
3 [{'Doc_ID': 9887, 'Feed_ID': 6286}]
4 [{'Doc_ID': 27261, 'Feed_ID': 6286}]
关于python - 从GroupBy Frame Pandas创建字典列表:Python,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54108871/