熊猫数据框枢轴-内存错误

Uld*_*tre 4 python dataframe pandas

我有一个df具有以下结构的数据框:

        val          newidx    Code
Idx                             
0       1.0      1220121127    706
1       1.0      1220121030    706
2       1.0      1620120122    565
Run Code Online (Sandbox Code Playgroud)

它有1000000行。我们总共有600个唯一Code值和200000个唯一newidx值。

如果我执行以下操作

df.pivot_table(values='val', index='newidx', columns='Code', aggfunc='max')
Run Code Online (Sandbox Code Playgroud)

我得到一个MemoryError。但这听起来很奇怪,因为结果数据帧的大小应该是可持续的:200000x600。

这种操作需要多少内存?有没有办法解决此内存错误?

Kar*_*tik 6

尝试看看这是否适合您的记忆:

df.groupby(['newidx', 'Code'])['val'].max().unstack()
Run Code Online (Sandbox Code Playgroud)

pivot_table 不幸的是,它会占用大量内存,因为它可能会复制多个数据。


如果groupby不能正常工作,则必须将DataFrame分成较小的部分。尽量不要分配多次。例如,如果从csv中读取:

df = pd.read_csv('file.csv').groupby(['newidx', 'Code'])['val'].max().unstack()
Run Code Online (Sandbox Code Playgroud)

避免多次分配。