如何将多个子DataFrame与主pandas DataFrame合并并导出CSV?
实现步骤与代码
核心思路
将所有子DataFrame存入字典(键为Title名称,值为对应子DataFrame),遍历主DataFrame的每一行,根据Title匹配字典中的子DataFrame,同步年份列的数值到主DataFrame,最后导出为CSV文件。
示例代码
import pandas as pd # ---------------------- 1. 替换为你的真实数据 ---------------------- # 主DataFrame:包含Title、URL和2015-2024年份列(初始为NaN) main_df = pd.DataFrame({ "Title": ["Python入门", "数据分析实战", "机器学习进阶"], "URL": ["https://example.com/python", "https://example.com/data", "https://example.com/ml"], "2015": [pd.NA, pd.NA, pd.NA], "2016": [pd.NA, pd.NA, pd.NA], "2017": [pd.NA, pd.NA, pd.NA], "2018": [pd.NA, pd.NA, pd.NA], "2019": [pd.NA, pd.NA, pd.NA], "2020": [pd.NA, pd.NA, pd.NA], "2021": [pd.NA, pd.NA, pd.NA], "2022": [pd.NA, pd.NA, pd.NA], "2023": [pd.NA, pd.NA, pd.NA], "2024": [pd.NA, pd.NA, pd.NA] }) # 子DataFrame:以Title命名,存入字典统一管理 sub_dfs = { "Python入门": pd.DataFrame({ "2015": [100], "2016": [120], "2017": [150], "2018": [180], "2019": [200], "2020": [220], "2021": [250], "2022": [280], "2023": [300], "2024": [320] }), "数据分析实战": pd.DataFrame({ "2015": [80], "2016": [90], "2017": [110], "2018": [130], "2019": [140], "2020": [160], "2021": [170], "2022": [190], "2023": [210], "2024": [230] }) } # ---------------------- 2. 匹配子DataFrame到主DataFrame ---------------------- year_cols = [str(year) for year in range(2015, 2025)] for idx, row in main_df.iterrows(): title = row["Title"] if title in sub_dfs: sub_df = sub_dfs[title] main_df.loc[idx, year_cols] = sub_df.iloc[0][year_cols].values # ---------------------- 3. 导出CSV ---------------------- main_df.to_csv("merged_data.csv", index=False, encoding="utf-8-sig")
关键说明
- 子DF管理:用字典存储子DataFrame,比依赖全局变量更安全,避免因变量名拼写错误出问题。
- 列匹配:通过
year_cols统一指定年份列,确保同步的列完全对应,不会遗漏。 - 容错处理:主DF中无对应子DF的Title,年份列会保留初始NaN,不会触发报错。
内容的提问来源于stack exchange,提问作者홍현기
相关产品推荐
相关产品推荐

