熊猫: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'的主要内容,如果未能解决你的问题,请参考以下文章

忽略熊猫 groupby 组中的 NaN 的标准错误

在 groupby 熊猫对象上应用 rolling() 时,多索引重复

熊猫:在 groupby 'date' 中删除重复项

熊猫理解 groupby

groupby - python 熊猫数据框

熊猫 .plot.hist() 和 .groupby()