按列表过滤 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), : ]
这样你只得到路口
我有一个数据框,其中有一行名为“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), : ]
这样你只得到路口