有什么方法可以在很多列(大约400)上进行pivot_table吗?无论如何,这个功能的限制是什么?
当我跑步时
pd.pivot_table(df, index=["ID"], values=["AMOUNT"],
columns=["MCC_CODE"], aggfunc=[np.sum])
在少量数据上运行良好,但当我在所有数据上运行时,我会得到MemoryError
。
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "C:\Users\KL16166\...tools\pivot.py", line 83, in pivot_table
margins=margins)
File "C:\Users\KL16166\...tools\pivot.py", line 120, in pivot_table
table = agged.unstack(to_unstack)
File "C:\Users\KL16166\...core\frame.py", line 3859, in unstack
return unstack(self, level)
File "C:\Users\KL16166\...core\reshape.py", line 400, in unstack
return _unstack_multiple(obj, level)
File "C:\Users\KL16166\...core\reshape.py", line 294, in _unstack_multiple
unstacked = dummy.unstack('__placeholder__')
File "C:\Users\KL16166\...core\frame.py", line 3859, in unstack
return unstack(self, level)
File "C:\Users\KL16166\...core\reshape.py", line 404, in unstack
return _unstack_frame(obj, level)
File "C:\Users\KL16166\...core\reshape.py", line 445, in _unstack_frame
return unstacker.get_result()
File "C:\Users\KL16166\...core\reshape.py", line 147, in get_result
values, value_mask = self.get_new_values()
File "C:\Users\KL16166\...core\reshape.py", line 184, in get_new_values
new_values = np.empty(result_shape, dtype=dtype)
MemoryError
数据看起来像这样:
ID MCC_CODE AMOUNT
0 24880505 9402 1
1 7276993 6011 7
2 94238163 5198 1
3 45832413 5309 2
4 6170989 6011 9
我想要将数据集转换为如下所示:
sum ...
AMOUNT ...
MCC_CODE 4812 4816 5039 5072 5085 5122 5198 5200 5309 5411 ... 5691
ID ...
3968474 NaN NaN NaN NaN 1 NaN NaN NaN NaN NaN ... NaN
5803653 NaN NaN NaN NaN NaN 1 NaN NaN NaN NaN ... NaN
6170989 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 1
7276993 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN
22691875 NaN NaN NaN NaN NaN NaN NaN 1 NaN NaN ... NaN
23470633 NaN NaN NaN NaN NaN NaN NaN 1 NaN NaN ... NaN
24880505 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN
34676389 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN
35444221 NaN NaN NaN 1 NaN NaN NaN NaN NaN NaN ... NaN
44226894 NaN 1 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN
44926723 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN
45832413 NaN NaN NaN NaN NaN NaN NaN NaN 2 NaN ... NaN
46623281 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN
48554278 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN
52911146 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN
69161440 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN
80738635 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 1
80966690 NaN NaN 2 NaN NaN NaN NaN NaN NaN NaN ... NaN
81479745 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN
83560007 NaN NaN NaN NaN NaN NaN NaN NaN NaN 22 ... NaN
94238163 NaN NaN NaN NaN NaN NaN 1 NaN NaN NaN ... NaN
95633282 4 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN
有关数据集的信息:
>>> df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 3002680 entries, 0 to 3002679
Data columns (total 3 columns):
NR_KLIENTA int64
MCC_KOD int64
POCET int64
dtypes: int64(3)
memory usage: 91.6 MB
我想知道是否有任何解决方法。感谢
编辑: 现在我在stackoverflow上发现this question was already posted没有结果。在python中是否有任何替代方法可以使用可在大型数据集上使用的聚合进行数据透视?
编辑编辑: 好吧,我设法通过将32位版本的Python更改为64位版本来解决它。现在它完美无缺。