我目前有一个这种形式的稀疏数据框:
df = [[True, False , False],
[False, False, True],
[False, True, False]]
每列的数据类型为Sparse[bool, False]。我想获得相反的结果,即 True -> False 和 False -> True,同时保持每列的数据类型为 Sparse[bool, False]。
我尝试过使用'~'运算符,值确实改变了,但数据类型也变成了Sparse[bool, True]。有什么办法可以解决这个问题吗?
您可以使用此代码:
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))