如何将循环生成的多个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
相关产品推荐
相关产品推荐

