删除重复数据时,稀疏数据变为NaN

时间:2020-07-27 19:21:02

标签: python pandas

例如,我有一个数据帧,其中包含一些稀疏数据类型的列

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

如何防止这种情况发生并保持原始值?

1 个答案:

答案 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