在不改变填充值的情况下对pandas稀疏数据类型进行操作

问题描述 投票:0回答:1

我目前有一个这种形式的稀疏数据框:

df = [[True, False , False],
      [False, False, True],
      [False, True, False]]

每列的数据类型为Sparse[bool, False]。我想获得相反的结果,即 True -> False 和 False -> True,同时保持每列的数据类型为 Sparse[bool, False]。

我尝试过使用'~'运算符,值确实改变了,但数据类型也变成了Sparse[bool, True]。有什么办法可以解决这个问题吗?

python pandas dataframe sparse-matrix
1个回答
0
投票

您可以使用此代码:

import pandas as pd


df = pd.DataFrame({
    'A': pd.arrays.SparseArray([True, False, False], fill_value=False),
    'B': pd.arrays.SparseArray([False, False, True], fill_value=False),
    'C': pd.arrays.SparseArray([False, True, False], fill_value=False),
})


df_inverted = ~df

# Convert each column back to Sparse[bool, False]
for column in df_inverted.columns:
    df_inverted[column] = df_inverted[column].astype(pd.SparseDtype(bool, False))
© www.soinside.com 2019 - 2024. All rights reserved.