首页 > 解决方案 > 无法过滤数据框列表

问题描述

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

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

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

标签: pandas

解决方案


您可以映射一个 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]

推荐阅读