应用来自用户输入的比较符号



我有以下代码:           

     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

最新更新