python - Pandas 排名方法中的 ValueError 没有更多解释

标签 python pandas

我有一个像这样的 Pandas 数据框:

     year   week           city  avg_rank
0    2016     52          Paris         1
1    2016     52 Gif-sur-Yvette         2
2    2016     52          Paris         1
3    2017      1          Paris         4
4    2016     52          Paris         3
5    2016     52          Paris         5
6    2016     52          Paris         2

但是这个代码行:

df['real_index']=df.groupby(by=['year', 'week', 'city']).avg_rank.rank(method='first')

生成堆栈跟踪:

/usr/local/lib/python2.7/dist-packages/pandas/core/groupby.pyc in rank(self, axis, method, numeric_only, na_option, ascending, pct)

/usr/local/lib/python2.7/dist-packages/pandas/core/groupby.pyc in wrapper(*args, **kwargs)
590                                                                 *args, **kwargs)
591                         except(AttributeError):
592                             raise ValueError
593
594             return wrapper

ValueError:

我的 DataFrame 的那些列中没有 NaN 值。

我正在使用 python2.7 以及 pandas 0.18.1numpy 1.11.0

我的 DataFrame 的形状由大约 9.000.000 行和 15 列组成。

更有趣的是,当我在我的 DataFrame 的所有子集中执行此代码行时(对于 1.000.000 行的每个子集),我没有引发任何 ValueError

这是 pandas 无法很好地管理相当大的 DataFrame 的已知行为,还是我遗漏了什么?

欢迎任何帮助!

最佳答案

由于我的 DataFrame 来自多个文件,我注意到一些索引是重复的。

df.index = np.arange(df.shape[0])

加载数据后,它现在可以工作了。

确实,我的假设是,在 groupby 的某些组中,有时会有具有相同索引的行。

当我尝试使用我的 DataFrame 的子集时,幸运的是/不幸的是,这种情况从未发生过。

但是,错误消息不是很详尽。

关于python - Pandas 排名方法中的 ValueError 没有更多解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41610667/

相关文章:

python - 同一包中的 cython 导入错误

python - Geopandas sjoin()错误: list index out of range

python - Matplotlib、Pandas、饼图标签错误

python - Pandas - 基于非数值数据的数据透视表

python - 将两个数据框与一些共同值合并

python - Pandas groupby 和转换 ('count' ) 给出放置错误 - 在较小的数据集上工作正常

python - pip 安装 pyzmail 错误消息

python - 删除包含特定字符串的行

python - 如何使用 Python/Pandas 从日期字段按月、日分组

python - 我如何将 NaNs 归因为 means() 但通过多索引