我有一个数据框列表,我想过滤掉一些行。
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
我也想把它改写成列表综合格式。
答案 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]