[英]Index-based access to rows in pandas.DataFrame with Sparse columns
由于 memory 的限制,我必须在pandas.DataFrame
(熊猫版本 1.0.5)中使用稀疏列。 不幸的是,通过对行的基于索引的访问(使用.loc[]
),我遇到了以下问题:
df = pd.DataFrame.sparse.from_spmatrix(
scipy.sparse.csr_matrix([[0, 0, 0, 1],
[1, 0, 0, 0],
[0, 1, 0, 0]])
)
df
Output:
0 1 2 3
0 0 0 0 1
1 1 0 0 0
2 0 1 0 0
如果使用.loc
:
df.loc[[0,1]]
Output:
0 1 2 3
0 0 0 NaN 1
1 1 0 NaN 0
理想情况下,我希望第二列也有0
秒。 我对这里发生的事情的假设是内部 csc 矩阵表示以及我正在访问不包含任何非零值的列的行中的值的事实最初与填充值混淆。 dtypes
有点反对这一点:
df.loc[[0,1]].dtypes
Output:
0 Sparse[int32, 0]
1 Sparse[int32, 0]
2 Sparse[float64, 0]
3 Sparse[int32, 0]
(请注意,即使第 2 列的视图的dtype
已从Sparse[int32, 0]
更改为Sparse[float64, 0]
,填充值仍为0
)。
谁能告诉我在行切片pd.DataFrame
中出现的所有NaN
是否确实指的是各自的零值,并且不会“隐藏”任何实际的非零条目? 是否有一种“安全”的方法可以在具有稀疏列的pd.DataFrame
上使用基于索引的行访问?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.