在pandas中,如果您想根据条件删除一些行,可以执行以下操作:
df = df.drop(df[(df.score < 50) & (df.score > 20)].index)
主要变化部分是表示条件的以下部分:
(df.score < 50) & (df.score > 20)
我正试图在此基础上创建自己的函数。
def drop_condition(df, cond_in_str):
df.drop(df[cond_in_str].index, inplace=True)
这样称呼它:
drop_condition(df, 'df.score < 50')
KeyError: 'df.score < 50'
如何将条件字符串转换为Pandas drop函数将识别的参数条件?
您需要使用pandas.DataFrame.query((,它将表达式作为string
。
def drop_condition(df, cond_in_str):
df.drop(df.query(cond_in_str).index)
您可以按原样使用函数,只需不加引号:
drop_condition(df, df.score < 50)
创建另一个变量并分配给它怎么样?然后在功能中使用
check_val = df.score > 50
(drop_condition(df, check_val))