如何在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
相关产品推荐
相关产品推荐

