Pandas Pivot with Strings- ValueError:索引包含重复的条目,无法重塑

时间:2017-12-17 19:44:42

标签: python pandas group-by pivot

鉴于此数据框:

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'),但似乎无法显示它或将其放入数据帧。我找到了这些的答案,但它们假设浮点数或整数值。

提前致谢!

2 个答案:

答案 0 :(得分:2)

您的真实数据与indexer成对包含重复项存在问题,因此必须使用Field之类的聚合函数,因为使用', '.join s:

string

或者:

df = df.groupby(['indexer', 'Field'])['Value'].apply(', '.join).unstack()
print (df)
Field     a   b
indexer        
0        aa  bb
1        cc  dd

答案 1 :(得分:0)

您应该使用crosstab

示例:

pd.crosstab(index=df.indexer, columns=df.field, aggfunc=lambda v:v)