给定此数据框:

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)

10-06 10:34