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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pandas Pivot with Strings- ValueError:索引包含重复的条目,无法重塑相关的知识,希望对你有一定的参考价值。

鉴于此数据框架:

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

提前致谢!

答案

有问题你的真实数据包含indexerField成对的重复,因此需要一些像', '.join这样的聚合函数,因为使用strings:

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)

以上是关于Pandas Pivot with Strings- ValueError:索引包含重复的条目,无法重塑的主要内容,如果未能解决你的问题,请参考以下文章

图解Pandas透视表pivot_table

pandas 透视表 pivot_table

Python Pandas Pivot表 - 计数点

如何在 pandas 的 crosstab/pivot_table 中使用两个不同的函数?

Pandas Pivot重复索引行

Pivot一个多列的pandas数据框架。