如何將運算子(eq、ne、gt 等)傳遞給資料框選擇函式?
import pandas as pd
from operator import eq, ne
df = pd.DataFrame({'Greet Ing': ['Hi Friend', 123, 'Hi Friend', '456']})
df[df['Greet Ing'] == 'Hi Friend']
df.query("`Greet Ing` == 'Hi Friend'")
def filter(dataframe, column, operator, value):
return dataframe[dataframe[column].operator(value)]
filter(df, 'Greet Ing', eq, 'Hi Friend') # Not working
惰性版本會將運算子視為字串和條件。
if o == 'eq': ..
elif o == 'ne': ..
uj5u.com熱心網友回復:
通過將 Series 傳遞給操作員創建函式:
from operator import eq, ne
def f(df1, c, op, y):
return df1[op(df1[c], y)]
df2 = f(df, 'Greet Ing', eq, 'Hi Friend')
print (df2)
Greet Ing
0 Hi Friend
2 Hi Friend
或者您可以按字典映射運算子:
from operator import eq, ne
ops = {'==': eq, '!=': ne}
def f(df1, c, op, y):
return df1[ops[op](df1[c], y)]
df2 = f(df, 'Greet Ing', '==', 'Hi Friend')
print (df2)
Greet Ing
0 Hi Friend
2 Hi Friend
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/519480.html
