我是Pandas的新手,正在尝试从现有的数据库创建一个新的数据框架。
我当前的数据框的格式为:
ID Country Status
ABC USA Go
ABC Columbia Stop
ABC Japan Pause
ABC Egypt Go
DEF Canada Go
DEF Peru Stop
我正在尝试合并数据以使其更紧凑。我的新格式是:
ID Go Stop Pause
ABC USA, Egypt Columbia Japan
DEF Canada Peru
基本上,可能的状态值将成为列,对于每个ID,这些列将填充具有该状态的国家/地区列表。我是 熊猫的新手,并正在努力解决这一问题的最佳方法-任何建议将不胜感激。
答案 0 :(得分:2)
您可以使用pd.pivot_table
:
res = df.pivot_table(index='ID', columns='Status', values='Country', aggfunc=', '.join)
print(res)
Status Go Pause Stop
ID
ABC USA, Egypt Japan Columbia
DEF Canada None Peru
答案 1 :(得分:2)
如果您绝对必须这样做,那么这就是您的做法。
In [48]: df.groupby(['ID', 'Status'])['Country'].apply(','.join).unstack()
Out[48]:
Status Go Pause Stop
ID
ABC USA,Egypt Japan Columbia
DEF Canada NaN Peru