首页 > 解决方案 > 从两个 Pandas 字段创建字典字段

问题描述

假设我有一个数据框,例如:

time    action    player    ...[other fields]
----------------------------------------------
10:00   Buy       A
10:00   Hold      B
09:45   Sell      A
09:45   Buy       B
09:45   Hold      A
09:30   Hold      A

我可以创建一个动作列表df.groupby('time)['action'].apply(list)

我想创建一个从/聚合time并创建字典的字段。actionplayer

所以预期的输出是:

 time    action    ...[other fields]
----------------------------------------------
10:00   {A:Buy,B:Hold}
09:45   {A:[Sell,Hold],B:Buy}
09:30   {A:Hold}

也许像df.groupby('time)['action'].apply(dict,player=action)什么?

标签: pythonpandasdictionary

解决方案


你很接近......set_index当你的时候,你就是这样玩的groupby,而且agg(dict)你有适合你的听写的键。

df.set_index('player').groupby('time')['action'].agg(dict)

time
09:30                          {'A': 'Hold'}
09:45    {'A': ['Sell', 'Hold'], 'B': 'Buy'}
10:00              {'A': 'Buy', 'B': 'Hold'}

推荐阅读