我有一个像这样的pandas Dataframe:
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.1
和numpy 1.11.0
。
我的DataFrame的形状由大约9.000.000行和15列组成。
更有趣的是,当我在DataFrame的所有子集中执行此代码行时(对于1.000.000行的每个子集),我不会提出任何ValueError
。
这是一种已知的行为pandas
无法管理相当大的DataFrame,还是我错过了什么?
欢迎任何帮助!
答案 0 :(得分:7)
由于我的DataFrame来自多个文件,我注意到有些索引是重复的。
使用
df.index = np.arange(df.shape[0])
加载数据后,它现在可以正常工作。
实际上,我的假设是,在群组中的某些群组中,有时行的索引相同。
当我尝试使用我的DataFrame的子集时,幸运的是,这个案例从未发生过。
但是,错误信息并非详尽无遗。
答案 1 :(得分:0)
可能数据太大而无法加载到内存中,因此将其分解为多个较小的文件是有道理的。你能说出数据集的大小吗?数据来自哪里,csv文件还是数据库?也许你应该看看火焰:https://github.com/blaze/blaze