给定此数据框:
import pandas as pd
df=pd.DataFrame({'Field':['a','b','a','b'],'Value':['aa','bb','cc','dd'],
'indexer':[0,0,1,1]})
df
Field Value indexer
0 a aa 0
1 b bb 0
2 a cc 1
3 b dd 1
我想产生一个这样的数据框:
indexer a b
0 aa bb
1 cc dd
我已经看到了有关在value字段为数字时如何实现此目标的答案,但是我似乎无法使它与字符串数据一起使用。
我试过df.groupby('indexer')但似乎无法显示它或将其放入数据框。我已经找到了答案,但是它们采用浮点数或整数值。
提前致谢!
最佳答案
有一个问题,您的真实数据包含与indexer
成对的Field
中的重复项,因此某些聚合函数(如', '.join
)是必需的,因为要使用string
:
df = df.groupby(['indexer', 'Field'])['Value'].apply(', '.join).unstack()
print (df)
Field a b
indexer
0 aa bb
1 cc dd
要么:
df = df.pivot_table(index='indexer', columns='Field', values='Value', aggfunc=','.join)