tdy*_*tdy 9

这些是pandas 1.0.0+ 中更新的稀疏转换。


如何将密集转换为稀疏

DataFrame.astype()与适当的SparseDtype()(例如, )一起使用int

>>> df = pd.DataFrame({'A': [1, 0, 0, 0, 1, 0]})
>>> df.dtypes
# A    int64
# dtype: object

>>> sdf = df.astype(pd.SparseDtype(int, fill_value=0))
>>> sdf.dtypes
# A    Sparse[int64, 0]
# dtype: object
Run Code Online (Sandbox Code Playgroud)

或者为了简洁起见使用字符串别名:

>>> sdf = df.astype('Sparse[int64, 0]')
Run Code Online (Sandbox Code Playgroud)

如何将稀疏转换为密集

使用DataFrame.sparse.to_dense()

>>> sdf = df.astype('Sparse[int64, 0]')
Run Code Online (Sandbox Code Playgroud)

如何将稀疏转换为COO

使用DataFrame.sparse.to_coo()

>>> from scipy import sparse
>>> sdf = pd.DataFrame.sparse.from_spmatrix(sparse.eye(3), columns=list('ABC'))
>>> sdf.dtypes
# A    Sparse[float64, 0]
# B    Sparse[float64, 0]
# C    Sparse[float64, 0]
# dtype: object

>>> df = sdf.sparse.to_coo()
# <3x3 sparse matrix of type '<class 'numpy.float64'>'
#         with 3 stored elements in COOrdinate format>
# (0, 0)    1.0
# (1, 1)    1.0
# (2, 2)    1.0
Run Code Online (Sandbox Code Playgroud)