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)])
,但没有成功。
我知道网站上也有类似的问题,但是找不到解决我问题的问题。
答案 0 :(得分:1)
使用:
select f.pid, h.hourslogged
from flightskills f
join
(select model, max( hourslogged) as Hourslogged
from flightskills
group by model) h
on f.model = h.model
说明:
用DataFrame.isin
将m = ['1','f2']
print(lst2_df.loc[lst2_df.isin(m).any(axis=1)])
A b
d 5.36 f2
(所有列)与布尔值进行比较:
DataFrame
然后添加DataFrame.any
以检查每行至少一个True:
print (lst2_df.isin(m))
A b
p False False
d False True
最后用boolean indexing
进行过滤。