在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末尾:
- 将
df_2的Date列设为索引,转置后得到日期为列的结构 - 添加
foo列并赋值为"2200" - 调整列顺序与
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
相关产品推荐
相关产品推荐

