按列表过滤 pandas 个数据框

Filter pandas dataframe by list

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

基本上,我想执行以下操作:

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

但是语法不正确。

假设 df 是你的 dataframe, lst 是我们的 list 个标签。

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

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

有numpy数据框吗?我猜它是 pandas 数据框,如果是的话,这就是解决方案。

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

使用重新索引更新,

df.reindex(collist, axis=1)

df.reindex(rowlist, axis=0)

以及两者:

df.reindex(index=rowlist, columns=collist)

您可以使用 .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

您可以尝试以下方法:

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

这样你只得到路口