如何在函数中包含 pandas 比较运算符?
How to include pandas comparison operators in the function?
假设我有以下数据
import pandas as pd
d = {'index': [0, 1, 2], 'a': [10, 8, 6], 'b': [4, 2, 6],}
data_frame = pd.DataFrame(data=d).set_index('index')
现在我要做的是,根据“b”列的值过滤此数据,可以这样说:
new_df = data_frame[data_frame['b']!=4]
new_df1 = data_frame[data_frame['b']==4]
我想要做的,而不是上面的这个方法,是编写函数,我还可以指示它应该使用什么样的比较运算符。像这样
def slice(df, column_name):
df_new = df[df[column_name]!=4]
return df_new
new_df2 = slice(df=data_frame, column_name='b')
上述函数只对数据进行!=
操作。我想要的是 !=
和 ==
都以某种方式在上面的函数中定义,并且当我使用该函数时,我可以理想地指示使用哪个。
如果我的问题需要更详细的说明,请告诉我
您可以向您的函数添加一个布尔参数:
def slice(df, column_name, equality=True):
if equality:
df_new = df[df[column_name]==4]
else:
df_new = df[df[column_name]!=4]
return df_new
new_df2 = slice(df=data_frame, column_name='b', equality=True)
顺便说一句,slice
是一个 built-in python 函数,因此重命名为其他名称可能是个好主意。
假设我有以下数据
import pandas as pd
d = {'index': [0, 1, 2], 'a': [10, 8, 6], 'b': [4, 2, 6],}
data_frame = pd.DataFrame(data=d).set_index('index')
现在我要做的是,根据“b”列的值过滤此数据,可以这样说:
new_df = data_frame[data_frame['b']!=4]
new_df1 = data_frame[data_frame['b']==4]
我想要做的,而不是上面的这个方法,是编写函数,我还可以指示它应该使用什么样的比较运算符。像这样
def slice(df, column_name):
df_new = df[df[column_name]!=4]
return df_new
new_df2 = slice(df=data_frame, column_name='b')
上述函数只对数据进行!=
操作。我想要的是 !=
和 ==
都以某种方式在上面的函数中定义,并且当我使用该函数时,我可以理想地指示使用哪个。
如果我的问题需要更详细的说明,请告诉我
您可以向您的函数添加一个布尔参数:
def slice(df, column_name, equality=True):
if equality:
df_new = df[df[column_name]==4]
else:
df_new = df[df[column_name]!=4]
return df_new
new_df2 = slice(df=data_frame, column_name='b', equality=True)
顺便说一句,slice
是一个 built-in python 函数,因此重命名为其他名称可能是个好主意。