我正在处理大熊猫中的稀疏数据,并且遇到了一些我觉得奇怪的行为。采用两个稀疏序列(使用kind = integer只是为了使它更具可读性 - 块中也会发生同样的事情):
import pandas as pd
a = pd.Series([1,0,0]).to_sparse(kind='integer')
b = pd.Series([0,1,0]).to_sparse(kind='integer')
查看a
,Indices: array([0])
表示索引0中的1,b
,Indices: array([1])
。到目前为止一切都很好。
现在我想在这些上执行&
,但即使整个结果系列为0,Indices的值为0和1(来自a和b的索引):
(a&b)
0 0
1 0
2 0
dtype: uint8
IntIndex
Indices: array([0, 1])
如果我改为密集然后再回到稀疏,则系列正确地具有空的Indices值:
(a&b).to_dense().to_sparse(kind='integer')
0 0
1 0
2 0
dtype: uint8
IntIndex
Indices: array([], dtype=int32)
有没有一些方法可以实现这一点而不会转换为密集然后再回到稀疏状态?我首先使用稀疏格式,因为密集占用了太多内存,&
的额外索引/块也会对内存性能造成很大影响。