[英]Filtering dataframe based on variable number of conditions
例如,我有一个这样的数据框:
df = pd.DataFrame({'A':['a', 'a', 'b', 'c', 'a', 'b',], 'B': [1, 2, 3, 4, 5, 6,]})
我需要的是根据“A”列中的值过滤 df。 问题是要过滤的值是由最终用户提供的。 例如:
cond = ['a', 'b']
意味着用户想要过滤 df 并将所有值 'a' 和 'b' 保留在列 'A' 中。 因此,在这种情况下,我需要使用以下条件过滤 df:
df = df.loc[(df['A'] == 'a') | (df['A'] == 'b')]
但是下次cond
列表中的值可能会有所不同,我需要考虑到这一点。 到目前为止,我已经尝试过for
循环。 我很确定它不会起作用......而且它没有:
for item in cond:
df = df.loc[df['A'] == item]
我还尝试在df.query()
下创建一个生成器,并对此寄予厚望,但它也没有奏效。 不幸的是,该方法不接受生成器:
df = df.query(f'A == {x}' for x in cond)
# or
df = df.query('A == @x' for x in cond)
不太确定还有什么要尝试的。 有没有人处理过这种类型的问题?
你可以试试
df = df.loc[df['A'].isin(cond)]
也可以尝试替代@BEN_YO
df.query('A==@cond')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.