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

如何将循环生成的多个Pandas DataFrame合并为单个DataFrame

解决循环生成的多个DataFrame合并问题

你当前的循环是在同一个df对象上反复修改New_Name列,每次打印的是整个DataFrame,并没有生成多个独立的子DataFrame。如果要实现你描述的“每个名称对应独立DataFrame再合并”的需求,可以按以下两种方式处理:

方法一:循环生成子DataFrame并存入列表后合并

初始化一个空列表,在循环中生成每个名称对应的子DataFrame并添加到列表,最后用pandas.concat()合并所有子DataFrame:

import pandas as pd

df = pd.read_csv("dataframe.csv")
list_of_names = ["name1", "name2", "name3"]  # 修正原代码中name3未加引号的语法错误
sub_dfs = []

for name in list_of_names:
    # 筛选出Name匹配当前名称的行,复制为独立子DataFrame
    filtered_df = df[df['Name'] == name].copy()
    filtered_df['New_Name'] = 1
    sub_dfs.append(filtered_df)

# 合并所有子DataFrame,ignore_index=True重置索引
final_df = pd.concat(sub_dfs, ignore_index=True)
print(final_df)

方法二:直接批量筛选(更高效)

如果你的需求只是给列表中所有名称对应的行添加New_Name=1并提取这些行,完全不需要循环生成多个DataFrame,直接用isin()批量筛选即可,性能更优:

import pandas as pd

df = pd.read_csv("dataframe.csv")
list_of_names = ["name1", "name2", "name3"]

# 批量筛选Name在列表中的行,复制后设置New_Name列
final_df = df[df['Name'].isin(list_of_names)].copy()
final_df['New_Name'] = 1
print(final_df)

两种方法最终都能得到你想要的合并后DataFrame效果。

内容的提问来源于stack exchange,提问作者Jack Gruber

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 09:27:29