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

Pandas横向合并同列名多DataFrame/CSV文件的实现方法

解决方案:按日期合并多DataFrame并区分结果列

要实现将多个包含date和result列的DataFrame合并为单一DataFrame(仅保留一个date列,每个原DataFrame的结果列独立),核心是先重命名重复的result列,再按date列做外连接,步骤如下:

1. 重命名结果列

为每个DataFrame的result列添加唯一标识(比如对应原DataFrame的序号或名称),避免列名冲突:

import pandas as pd

# 示例数据
df1 = pd.DataFrame({
    'date': ['01/06/2023', '02/06/2023', '04/06/2023'],
    'result': [0.5, 2.4, 6.5]
})
df2 = pd.DataFrame({
    'date': ['01/06/2023', '03/06/2023', '04/06/2023'],
    'result': [0.7, 0.5, 0.2]
})

# 重命名result列
df1 = df1.rename(columns={'result': 'result_1'})
df2 = df2.rename(columns={'result': 'result_2'})

2. 按日期外连接合并

使用pd.merge()按date列做外连接,自动对齐所有日期,缺失数据会填充为NaN(Streamlit绘图可直接识别):

merged_df = pd.merge(df1, df2, on='date', how='outer')

运行后得到的merged_df即为预期格式:

dateresult_1result_2
01/06/20230.50.7
02/06/20232.4NaN
03/06/2023NaN0.5
04/06/20236.50.2

3. 处理多个DataFrame的批量合并

如果有更多DataFrame,可通过循环批量处理:

# 假设有多个DataFrame存入列表
dfs = [df1, df2, df3]

# 初始化合并结果
merged_df = dfs[0].rename(columns={'result': f'result_1'})

# 依次合并剩余DataFrame
for idx, df in enumerate(dfs[1:], start=2):
    df_renamed = df.rename(columns={'result': f'result_{idx}'})
    merged_df = pd.merge(merged_df, df_renamed, on='date', how='outer')

注意事项

  • 若需要将NaN显示为空字符串,可执行merged_df.fillna(''),但会将数值转为字符串,绘图前需注意类型转换;
  • Streamlit的折线图会自动忽略NaN值,无需额外处理即可生成正确的折线展示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 16:44:58