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

在Pandas中如何将行向DataFrame转列向并与现有列向DataFrame合并?

合并列向与行向DataFrame为指定结构

问题描述

现有两个Pandas DataFrame:

  • df_1为列向结构,日期作为列名:
foo     2024-01-01  2024-02-01
--  -----   ---------   ---------
0   4010    100.00      10.00
1   4020    101.00      11.00
2   4030    102.00      12.00
3   4040    101.00      11.00
  • df_2为行向结构,日期作为行数据:
Date        Total
--   ----        -----
0   2024-01-01  35.86
1   2024-02-01  3.91

需要将两者按日期合并,最终得到如下结构(新增行的foo列值为2200):

foo     2024-01-01  2024-02-01
--  ----    ---------   ---------
0   4010    100.00      10.00
1   4020    101.00      11.00
2   4030    102.00      12.00
3   4040    101.00      11.00
4   2200     35.86       3.91

示例数据

from datetime import date
import pandas as pd

date1 = date(2024, 1, 1)
date2 = date(2024, 2, 1)

df_1 = pd.DataFrame({
        "foo": ["4010", "4020", "4030", "4040"],
        date1: [100.00, 101.00, 102.00, 101.00],
        date2: [10.00, 11.00, 12.00, 11.00],})

df_2 = pd.DataFrame({
        "Date": [date1, date2],
        "Total": [35.86, 3.91]})

解决方案

核心思路是先将df_2转换为与df_1一致的列向结构,再追加到df_1末尾:

  1. 将df_2的Date列设为索引,转置后得到日期为列的结构
  2. 添加foo列并赋值为"2200"
  3. 调整列顺序与df_1对齐,最后合并两个DataFrame

完整代码:

# 转换df_2的结构,匹配df_1的列向格式
df_2_transformed = df_2.set_index('Date').T.reset_index(drop=True)
df_2_transformed['foo'] = '2200'
# 调整列顺序,确保和df_1一致
df_2_transformed = df_2_transformed[df_1.columns]

# 合并两个DataFrame并重置索引
result_df = pd.concat([df_1, df_2_transformed], ignore_index=True)

print(result_df)

输出结果

foo  2024-01-01  2024-02-01
0  4010       100.0        10.0
1  4020       101.0        11.0
2  4030       102.0        12.0
3  4040       101.0        11.0
4  2200        35.86         3.91

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 18:45:32