按列表过滤pandas数据帧

时间:2017-07-11 16:45:07

标签: python pandas numpy data-science

我的数据框有一行名为“Hybridization REF”。我想过滤,以便我只获取与我的列表中的一个项目具有相同标签的项目的数据。

基本上,我想做以下事情:

dataframe[dataframe["Hybridization REF'].apply(lambda: x in list)] 

但语法不正确。

3 个答案:

答案 0 :(得分:1)

假设 dfdataframelst是我们的list标签。

df.loc[ df.index.isin(lst), : ]

将显示索引与列表项的任何值匹配的所有行。我希望这有助于解决您的疑问。

答案 1 :(得分:1)

您可以使用.loc或列过滤:

df = pd.DataFrame(data=np.random.rand(5,5),columns=list('ABCDE'),index=list('abcde'))

df
          A         B         C         D         E
a  0.460537  0.174788  0.167554  0.298469  0.630961
b  0.728094  0.275326  0.405864  0.302588  0.624046
c  0.953253  0.682038  0.802147  0.105888  0.089966
d  0.122748  0.954955  0.766184  0.410876  0.527166
e  0.227185  0.449025  0.703912  0.617826  0.037297

collist = ['B','D','E']

rowlist = ['a','c']

获取列表中的列:

df[collist]

输出:

          B         D         E
a  0.174788  0.298469  0.630961
b  0.275326  0.302588  0.624046
c  0.682038  0.105888  0.089966
d  0.954955  0.410876  0.527166
e  0.449025  0.617826  0.037297

获取列表中的行

df.loc[rowlist]

          A         B         C         D         E
a  0.460537  0.174788  0.167554  0.298469  0.630961
c  0.953253  0.682038  0.802147  0.105888  0.089966

答案 2 :(得分:0)

是否存在numpy数据帧?我猜它是pandas数据帧,如果是这样的解决方案。

df[df['Hybridization REF'].isin(list)]