是否仍然可以使用分类dtypes进行计算?
如果没有,如何减少具有分类整数的RAM的使用(非常大的10m +条目表,只有约500个唯一整数)。所有计算必须以1个数组的形式进行。
df = pd.DataFrame({'a':[1,2,3,2,1,3,4,5,6,7],
'b':[1,2,3,2,1,3,4,5,6,7]})
df['a'] = df['a'].astype('category')
df['a'] * df['b']
在大熊猫中0.20.3
:
Out[23]:
0 1
1 4
2 9
3 4
4 1
5 9
6 16
7 25
8 36
9 49
dtype: int64
这不再适用于较新的熊猫版本(例如v0.23.0
)
TypeError: Series cannot perform the operation *
现在,我需要将代码重构为较新的pandas版本,但是有没有办法保持所提供的减少的RAM消耗类别?
作为目前的解决方法,您可以使用numpy的基本整数类型之一:
import numpy as np
df = pd.DataFrame({'a':[1,2,3,2,1,3,4,5,6,7],
'b':[1,2,3,2,1,3,4,5,6,7]})
df['a'] = df['a'].astype(np.int8)
df['b'] = df['b'].astype(np.int8)
>>> df['a'] * df['b']
0 1
1 4
2 9
3 4
4 1
5 9
6 16
7 25
8 36
9 49
dtype: int8
请注意,这会使您承担责任,以防溢出。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句