迭代Pandas稀疏序列,不包含缺失值

rhfm7lfc  于 2023-02-02  发布在  其他
关注(0)|答案(1)|浏览(81)

我有一个列非常稀疏的Pandas数据框。我想迭代数据框的值,但不包括丢失的值,以节省时间。
我找不到如何访问非空单元格的索引。
例如:

a = pd.Series([2, 3, 0, 0, 4], dtype='Sparse[int]')
print(a.sparse.sp_values)  # --> [2,3,4]
print(a.sparse.sp_index)   # --> AttributeError
print(a.sparse.to_coo())   # --> ValueError

我得到了非空值,但是索引在哪里?在上面的例子中,我正在寻找[0,1,4]
我查看了documentation,它似乎没有提到它。我只找到了SparseArray的信息,但没有稀疏类型的Series/DataFrame的信息。
正在打印dir(a.sparse)(不包括以"_"开头的字符):

['density', 'fill_value', 'from_coo', 'npoints', 'sp_values', 'to_coo', 'to_dense']
lqfhib0f

lqfhib0f1#

IIUC,使用numpy中的flatnonzero

idx = np.flatnonzero(a).tolist()
print(idx)
​#[0, 1, 4]

或者loc来自具有 * 布尔索引 * 的pandas

idx = a.ne(0).loc[lambda s: s].index.tolist() # or list(a[a.ne(0)].index)
print(idx)
#[0, 1, 4]

相关问题