给定这个数据框:
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
我已经看到了有关如何在值字段为数字时实现此目的的答案,但我似乎无法使用字符串数据来实现此目的。
我尝试过 df.groupby('indexer') 但似乎无法显示它或将其放入数据框中。我已经找到了这些问题的答案,但它们假设浮点或整数值。
提前致谢!
最佳答案
您的实际数据存在问题,其中 indexer
与 Field
成对存在重复项,因此需要一些聚合函数,例如 ', '.join
,因为使用 string
s:
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)
关于python - Pandas Pivot with Strings-ValueError : Index contains duplicate entries, 无法 reshape ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47858798/