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
我也想把它改写成列表综合格式。
解决方案
您可以映射一个 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]
推荐阅读
- swift - 类型别名的用途
- python - 为什么pyqt tablewigdet只显示行号而没有数据?
- python - 字典列表 - 计数出现次数
- javascript - (Vue/Nuxt, async await, promise) 触发 beforeRouteLeave 时,使用 Promise 询问子组件,等待返回答案
- maven - 未能执行目标 org.sonarsource.scanner.maven:sonar-maven-plugin: null: MojoExecutionException: NullPointerException
- flutter - 有没有办法在运行时从服务器获取代码并执行它?
- ruby-on-rails - Rails 类如何直接在类上调用方法
- python - 在 django 登录的用户名字段中允许多个选项
- image - 由于图像 XAML 中的 dpi 差异,Canvas 中的项目与其计算位置不匹配
- flutter - 如何在堆栈中定位按钮