无法过滤数据框列表

时间:2021-03-29 03:36:57

标签: pandas

我有一个数据框列表,我想过滤掉一些行。

d = {'id': ['111', '222', '333'], 'queries': ['High', 'Mid', 'Low'], 'time_stay': ['High', 'Mid', 'Low']}
dd = pd.DataFrame(data=d)

d2 = {'id': ['444', '555'], 'queries': ['True', 'False'], 'time_stay': ['High', 'Mid']}
dd2 = pd.DataFrame(data=d2)

df_list = [dd, dd2]

df_list

[    id queries time_stay
 0  111    High      High
 1  222     Mid       Mid
 2  333     Low       Low,
     id queries time_stay
 0  444    True      High
 1  555   False       Mid]

如果数据帧长度 == 3,我只想保留 queries == Low

for df in df_list:
    if len(df) == 3:
        df = df.loc[df['queries'] == 'Low']
    else:
        pass

代码 df.loc[df['queries'] == 'Low'] 按预期工作,但当我检查 df_list[0] 时,结果未保存。

预期的输出应该是:

df_list[0]

333 Low Low

我也想把它改写成列表综合格式。

1 个答案:

答案 0 :(得分:0)

您可以映射 lambda 函数:

df_list = list(map(lambda df: df[df.queries == 'Low'] if len(df) == 3 else df, df_list))

输出

df_list
[    id queries time_stay
 2  333     Low       Low,
     id queries time_stay
 0  444    True      High
 1  555   False       Mid]