You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在for循环中使用pd.concat合并多次筛选后的DataFrame

解决方法:批量筛选并合并DataFrame

嗨,我来帮你搞定这个问题!你现在遇到的核心问题是每次循环生成的筛选结果都被覆盖了,而且没法自动把所有结果传给pd.concat。其实只需要把每次筛选得到的DataFrame收集到一个列表里,最后一次性合并就行,不用手动逐个输入变量。

步骤1:收集筛选结果到列表

首先初始化一个空列表,在循环里把每次筛选出的DataFrame添加进去,这样所有结果都会被保存下来:

import pandas as pd

# 假设你的df已经提前定义好
x = "'1','2','3','4'"
# 初始化空列表用来存储所有筛选后的DataFrame
filtered_dfs = []

for i in x.split(","):
    # 注意:split后每个i已经带单引号了,直接用i作为contains的参数即可
    current_df = df[df['Column'].str.contains(i)]
    filtered_dfs.append(current_df)

步骤2:一次性合并所有结果

有了存储所有结果的列表后,直接把列表传给pd.concat就可以完成合并:

final_merged_df = pd.concat(filtered_dfs)

更简洁的写法:列表推导式

如果想让代码更紧凑,可以用列表推导式一步生成结果列表,再合并:

x = "'1','2','3','4'"
filtered_dfs = [df[df['Column'].str.contains(i)] for i in x.split(",")]
final_merged_df = pd.concat(filtered_dfs)

小提醒:避免重复加引号

你原来的代码里写了"'" + i + "'",其实这是多余的——因为x.split(",")拆分后,每个i本身就是带单引号的字符串(比如'1'),直接用i作为contains的参数就能正确匹配,重复加引号反而会导致匹配不到目标内容哦。

内容的提问来源于stack exchange,提问作者Recep Durgut

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 21:07:40