例如,我有一个数据帧,其中包含一些稀疏数据类型的列
df = pd.DataFrame({"A": pd.arrays.SparseArray([0, 0, 0]), "B": [55, 100, 55], "C": [4, 4, 4]})
A B C
0 0 55 4
1 0 100 4
2 0 55 4
但是,当我尝试删除重复项时,稀疏序列变为NaN。
df.drop_duplicates(inplace=True)
A B C
0 NaN 55 4
1 NaN 100 4
我的预期输出是
A B C
0 0 55 4
1 0 100 4
如何防止这种情况发生并保持原始值?
答案 0 :(得分:0)
SparseArray
不为整数数据类型存储0
。
请参见doc,其中指出,通过提供fill_value
之类的东西,例如np.inf
,将存储np.inf
以外的所有元素。就是说,如果数据集中不存在np.inf
,则基本上会使稀疏数组的概念失效。
例如:
import numpy as np
import pandas as pd
df = pd.DataFrame({"A": pd.arrays.SparseArray([0, 0, 0], fill_value=np.nan),
"B": [55, 100, 55], "C": [4, 4, 4]})
print(df.drop_duplicates())
输出
A B C
0 0 55 4
1 0 100 4