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

如何将多个Pandas DataFrame的列值按日期索引合并为单列?

合并多个Pandas DataFrame的item列(按日期索引,逗号分隔)

需求

把多个带item列的Pandas DataFrame,按日期索引合并成一个新DataFrame,同一日期的item值用逗号分隔成单列。

示例数据代码

import pandas as pd

s1 = pd.DataFrame({'item':['apple','apple','apple']}, 
                  index=['1/2/2024','1/5/2024','1/6/2024'])
s2 = pd.DataFrame({'item':['orange','orange','orange']}, 
                  index=['1/3/2024','1/5/2024','1/7/2024'])
s3 = pd.DataFrame({'item':['banana','banana','banana','banana']}, 
                  index=['1/4/2024','1/5/2024','1/6/2024','1/7/2024'])

解决代码

import pandas as pd

# 把所有目标DataFrame放入列表
dfs = [s1, s2, s3]

# 合并所有DataFrame,保留原索引
combined_df = pd.concat(dfs)

# 按索引分组,将每组的item值用逗号拼接
result_df = combined_df.groupby(combined_df.index)['item'].apply(','.join).to_frame()

# 可选:按日期排序,让结果更规整
result_df.index = pd.to_datetime(result_df.index)
result_df = result_df.sort_index()
result_df.index = result_df.index.strftime('%m/%d/%Y')

print(result_df)

运行结果

item
01/02/2024                apple
01/03/2024               orange
01/04/2024               banana
01/05/2024  apple,orange,banana
01/06/2024         apple,banana
01/07/2024        orange,banana

简单说明

  1. 合并DataFrame:pd.concat()把多个小DataFrame拼成一个大的,所有日期和对应的item都集中在一起。
  2. 分组拼接:groupby(索引)按日期分组,apply(','.join)把每组的item值连成逗号分隔的字符串,to_frame()转回DataFrame格式。
  3. 日期排序:如果原始日期索引顺序混乱,转成datetime类型排序后再转回原格式,保证结果按日期顺序排列,不需要的话可以删掉这部分代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 19:52:32