我有以下代码:
def segment_table(df, col_condition):
segment =
df[df.loc[:,col_symbol_condition[0]].apply(eval(col_condition[1]))
return segment
print(segment_table(example_df, ["columns", "<4"])
但它不起作用。在这种情况下,如何应用<、>等运算符?谢谢
您可以将此函数应用于DataFrame
的每一行:
def evaluate(row, column, condition):
if eval(str(row[column])+condition[0]+condition[1:]):
return row
return
example_df.apply(evaluate, args=("columns","<4"), axis=1).dropna()
它将返回满足"条件"参数中指定的条件的行,在"列"参数中指定的列上。它仅适用于"<"和">"运算符,因为它们只有一个字符长。
下面是一个非常简单的数据帧上的结果:
example_df = pd.DataFrame([[1, 2],
[6, 7],
[3, 4]], columns=['col1', 'columns'])
输出:
col1 columns
0 1.0 2.0