python - Pandas Pivot with Strings-ValueError : Index contains duplicate entries, 无法 reshape

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

提前致谢!

最佳答案

您的实际数据存在问题,其中 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)

关于python - Pandas Pivot with Strings-ValueError : Index contains duplicate entries, 无法 reshape ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47858798/

相关文章:

python - 如何终止作为服务运行的 flask 应用程序?

带有矩形的 Pandas 时间序列子图

sql-server - 没有分组依据的最大sql服务器

select - DB2:通过干扰 Select 子句中的子查询进行分组

php - mysql 中的条件分组

python - 我如何打印列表中的项目,直到它们达到一定数量的行

python - 获取 2 个独立的 python 模块实例

python - 如何从 matplotlib 图中提取数据

python - Pandas匹配数据帧结构

python - Pandas::将一列的值作为列