groupby 上的“值的长度与索引的长度不匹配”

问题描述 投票:0回答:2

我的一个数据块笔记本中有一个 pandas groupby 的奇怪错误。

数据是机密的,所以这是我的错误的虚拟插图数据框 df 实际上是合并其他两个数据框的结果)。

如果你想复制数据框:

data = {'group1':  ['a', 'b','a','a','a'],
        'group2': ['f', 'f', 'f' , 'f', 'f'],
         'aggregate': ['1', '2','3','4','5'],}
df = pd.DataFrame (data, columns = ['group1','group2','aggregate'])

在这个阶段,dataframe df 显示正确。现在我正在做一个 groupby :

agg = df.groupby(['group2', 'group1'],  as_index=False).agg({'aggregate':', '.join})

我应该得到这个:

但我明白了:

ValueError:值的长度与索引的长度不匹配

“让它发挥作用”的唯一方法是:

修复1: agg = df.groupby(['group2', 'group1'], as_index=True).agg({'aggregate':', '.join}).reset_index()

我明白了:

修复 2: 初始合并后,“重置数据框”,得到一个新的。 这很好用,但不是很好。

df = pd.DataFrame.from_dict(drift.to_dict())

我的数据是否以某种方式损坏了?怎么样?

任何级别的反馈都将不胜感激(无论您是否知道错误的原因 - 这会很棒! - 或不知道),只是为了让我更好地了解幕后可能发生的事情。

非常期待这里的任何建议或意见。谢谢!

python python-3.x pandas group-by multi-index
2个回答
1
投票

我测试了同样的代码,得到了预期的结果:

我在 Google Colab 中测试过。也许问题出在您的 Pandas 版本上。我用

pandas: 1.1.5

测试了你的代码

0
投票

当“

groupby
列”之一具有
category
类型时,Pandas 会抛出该错误。

解决方法可能是调用

astype
并选择文字,例如
string

df = df.astype({'group1': 'string', 'group2': 'string'})

这道题大概有同样的错误

© www.soinside.com 2019 - 2024. All rights reserved.