我在使用 Pandas 應用過濾器時遇到問題。問題是這樣的。集合中的第一個變數 (filter_names) 應對應于集合中的第一個變數 (filter_values)。第二個變數的值應該大于或等于給定的值。換句話說,在這樣的輸入中:
df = pd.DataFrame({'animal': ['cat', 'cat', 'snake', 'dog', 'dog', 'cat', 'snake', 'cat', 'dog', 'dog'],
'age': [2.5, 3, 0.5, np.nan, 5, 2, 4.5, np.nan, 7, 3],
'name': ['Murzik', 'Pushok', 'Kaa', 'Bobik', 'Strelka', 'Vaska', 'Kaa2', 'Murka', 'Graf', 'Muhtar'],
'visits': [1, 3, 2, 3, 2, 3, 1, 1, 2, 1],
'priority': ['yes', 'yes', 'no', 'yes', 'no', 'no', 'no', 'yes', 'no', 'no']},
index = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'])
filter_names = ["animal", "age"]
filter_values = ["cat", 3]
要放入查詢中的條件如下所示:"cat"=="animal", "age"<3。
它應該提供以下 DF:
animal age name visits priority
a cat 2.5 Murzik 1 yes
f cat 2.0 Vaska 3 no
我寫了下面的代碼來實作這個效果:
df_filtered = df[(filter_names[0]==filter_values[0])&(df[filter_names[1]]>=filter_values[1])]
無濟于事。我似乎缺少什么?
uj5u.com熱心網友回復:
我認為您df[...]在第一個條件中輸了,并在第二個條件中使用了錯誤的符號:
df[(df[filter_names[0]] == filter_values[0]) & (df[filter_names[1]] < filter_values[1])]
它會像這樣作業:
In [2]: df[(df[filter_names[0]] == filter_values[0]) & (df[filter_names[1]] < filter_values[1])]
Out[2]:
animal age name visits priority
a cat 2.5 Murzik 1 yes
f cat 2.0 Vaska 3 no
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/334592.html
