DataFrame的apply方法与列表推导比较
我需要获取一个 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')