熊猫:groupby 的问题。错误:'ValueError: Grouper for <something> not 1-dimensional'
Posted
技术标签:
【中文标题】熊猫:groupby 的问题。错误:\'ValueError: Grouper for <something> not 1-dimensional\'【英文标题】:Pandas: issues with groupby. Error: 'ValueError: Grouper for <something> not 1-dimensional'熊猫:groupby 的问题。错误:'ValueError: Grouper for <something> not 1-dimensional' 【发布时间】:2019-04-24 13:46:18 【问题描述】:我一直在这里寻找这个错误,但我只找到了这个解决方案1(在我的情况下不起作用)。有人可以指导我如何解决它吗?
我的数据集 (df2) 如下所示:
id_cl id_sup total_t cl_ind cl_city sup_ind sup_city same_city
0 1000135 1797029 414.85 I5610 11308.0 G4711 10901.0 no
1 1000135 1798069 19.76 I5610 11308.0 G4719 10901.0 no
2 1000135 1923186 302.73 I5610 11308.0 G4630 10901.0 no
3 1000135 2502927 1262.86 I5610 11308.0 G4630 11308.0 yes
4 1000135 2504288 155.04 I5610 11308.0 G4711 11308.0 yes
我需要将这个数据集分组如下:
df_sup = df2.groupby(['cl_city','cl_ind','same_city']).agg('id_sup':'nunique', 'total_t':'sum')
但在执行此操作时,我收到此错误!:
ValueError: Grouper for 'cl_city' not 1-dimensional
因此我需要这样的东西:
id_sup total_t
cl_city cl_ind same_city
10701 A0112 no 2 21964.22
yes 31 3530.40
A0122 no 2374 23328061.47
yes 1228 2684408.12
A0127 no 11 19962.68
yes 7 915.44
A0163 no 357 574827.97
yes 140 60385.7
【问题讨论】:
df2.columns
的输出是什么?
作为输出我需要知道:cl_city、cl_ind 和same_city 的每个项目有多少唯一的“id_sup”和“total_t”的总和。基本上是一个带有列的表: cl_city | cl_ind |同城 |唯一 id_sup 的计数 | total_T 的总和
***.com/questions/43298192/…的可能重复
@PAstudilloE,谢谢!这确实揭示了错误的直接原因:由于某种可怕的原因,df2
的列是一个高度嵌套的 MultiIndex,其中每个字符串不是一个 标签,而是每个字符串实际上是一个单独的*索引级别*(!)对此的修复来自***.com/q/14507794,并且是:df.columns = [' '.join(col).strip() for col in df.columns.values]
。您提到df2
是多次合并的结果;我怀疑这些合并没有以最佳方式编写,导致这种病态的 MultiIndex 情况。
谢谢@PeterLeimbigler!!这正是发生的事情。我按照你的建议解决了这个问题。
【参考方案1】:
我不知道为什么 python 向我显示该错误,df2 是合并多个先前数据集的结果,并且它没有任何重复的列。
我以一种愚蠢的方式解决了这个问题,但它奏效了。我将 df2 转换为 CSV 文件,然后再次加载。之后,一切正常。 [但我不知道,为什么 python 显示该错误]。希望能帮助到你。
【讨论】:
我也遇到了合并多个相同模式的 DF 的问题,它似乎取决于行数或 DF 的数量。例如df.append([df_pt2, df_pt3, df_pt4, df_pt5, df_pt6], ignore_index=True)
工作正常,但 df.append([df_pt2, df_pt3, df_pt4, df_pt5, df_pt6, df_pt7], ignore_index=True)
失败。以上是关于熊猫:groupby 的问题。错误:'ValueError: Grouper for <something> not 1-dimensional'的主要内容,如果未能解决你的问题,请参考以下文章