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
。