[英]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.