我有一個帶有 bash 腳本的代碼庫,該腳本運行的作業包括使用多個條件過濾 Pandas 資料框的行,即:
df.loc[(df['A'] > 5) &
df['B'].isin([1,5,9]) &
(df['C'] == "blue")]
假設我希望它可以泛化,以便任何使用此代碼庫的人在運行 bash 腳本時都可以指定他們自己的過濾條件串列。我可以想象,如果我們只是使用轉換為 python 字典的 json 字串選擇特定值,這將是相對簡單的:
filter_criteria={"B": [1,5,9], "C": ["blue"]}
for col, values in filter_criteria.items():
df = df.loc[df[col].isin(values)]
我想不出如何適應的一件事是>,<或者可能在未來的道路上,能夠進行更復雜的過濾(例如df.loc[(df['A']<5) | (df['A']>10))。有沒有人對如何將運算子指定為 json 字典的一部分有任何想法?
uj5u.com熱心網友回復:
創建一個查詢字串并用于query過濾您的資料框。
假設這個資料框:
>>> df
A B C
0 1 2 blue
1 3 3 red
2 5 5 yellow
3 7 6 blue
4 9 9 blue
qs = "A > 5 & B.isin([1,5,9]) & C == 'blue'"
out = df.query(qs)
print(out)
# Output:
A B C
4 9 9 blue
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/372414.html
