gpt4 book ai didi

python - Pandas 类别的计算

转载 作者:太空宇宙 更新时间:2023-11-04 04:42:12 24 4
gpt4 key购买 nike

是否仍然可以使用分类数据类型进行计算?

如果不是,我如何减少具有分类整数的 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']

在 Pandas 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

这不再适用于较新的 pandas 版本(例如 v0.23.0)

TypeError: Series cannot perform the operation *

我现在需要为更新的 pandas 版本重构我的代码,但是有没有办法维持提供的减少 RAM 消耗的类别?

最佳答案

作为目前的解决方法,您可以使用 numpy's basic integer types 之一:

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

请注意,这让您有责任注意溢出。

关于python - Pandas 类别的计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50410547/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com