根据条件为panda数据帧选择行


import numpy as np
import pandas as pd

lst2 = [[0.23,"f1"],[5.36,'f2']]
lst2_df = pd.DataFrame(lst2,index=list('pd'),columns=list('ab'))
lst2_df = lst2_df.rename({'a':'A'},axis='columns')
print(lst2_df)
m = ['1','f2']
print(lst2_df.loc[lst2_df['b'].isin(m)])

如果我想对每一列迭代这个条件,而不是对其进行硬编码,我该怎么写?我试过print(lst2_df.loc[lst2_df['A':'b'].isin(m)]),但没用。我知道网站上也有类似的问题,但我找不到一个能解决我问题的。

使用:

m = ['1','f2']
print(lst2_df.loc[lst2_df.isin(m).any(axis=1)])
A   b
d  5.36  f2

说明:

DataFrame(所有列(与DataFrame.isin比较布尔值:

print (lst2_df.isin(m))
A      b
p  False  False
d  False   True

然后添加DataFrame.any以检查每行至少一个True:

print (lst2_df.isin(m).any(axis=1))
p    False
d     True
dtype: bool

最后用boolean indexing

最新更新