DataFrame的apply方法与列表推导比较

0 投票
1 回答
840 浏览
提问于 2025-04-17 23:03

我需要获取一个 pandas Series 中一些特定索引的列表;并且想要获取一个 DataFrame 中所有 Series 的这些列表。

我可以用列表推导式来做到这一点,但我想了解一下是否可以使用 DataFrame 的 apply 方法来实现。这里有一个简单的例子:

a=pd.DataFrame({'a':[1,1,1,0,0,1],'b':[1,0,1,0,0,1]})
[a[a[name]==1].index for name in a.columns]

可能是因为我对 pandas 的了解还不够深入,所以当我使用 apply 方法时,我把 Series 想象成一个列表,因此我不知道怎么“放入”索引属性。

1 个回答

1

我不太清楚你最终想要达到什么目标,但通常来说,最好把框架保持为框架,以便将来使用。

In [1]:  a=pd.DataFrame({'a':[1,1,1,0,0,1],'b':[1,0,1,0,0,1]})

把你不感兴趣的元素转换成nan(表示缺失值)。

In [2]: a.where(a==1)
Out[2]: 
    a   b
0   1   1
1   1 NaN
2   1   1
3 NaN NaN
4 NaN NaN
5   1   1

[6 rows x 2 columns]

如果你真的想要索引的话。

In [4]: a.where(a==1)['a'].dropna().index
Out[4]: Int64Index([0, 1, 2, 5], dtype='int64')

In [5]: a.where(a==1)['b'].dropna().index
Out[5]: Int64Index([0, 2, 5], dtype='int64')

撰写回答