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

基于日期信息重塑Pandas DataFrame

用Pandas重排DataFrame实现日期映射和列转行需求

先看你的原始DataFrame结构:

import pandas as pd

# 构造原始数据
data = {
    'Current_date': ['19/10/2021', '19/10/2021', '19/10/2021', '19/10/2021'],
    'ID': [11, 11, 12, 13],
    'Current_date+1': [0.9, 0.7, 1.0, 0.8],
    'Current_Date+2': [0.8, 0.6, 1.5, 0.5]
}
df = pd.DataFrame(data)

对应的原始表:

Current_dateIDCurrent_date+1Current_Date+2
19/10/2021110.90.8
19/10/2021110.70.6
19/10/2021121.01.5
19/10/2021130.80.5

你的需求是把Current_date+1和Current_Date+2这两列转成行,同时根据列名给Current_date加上对应天数得到新的Date列,最后映射数值到Value列。

解决方案步骤

我会用Pandas的melt函数来做列转行,再处理日期计算,具体代码如下:

# 1. 先把日期列转成datetime类型,方便后续计算
df['Current_date'] = pd.to_datetime(df['Current_date'], format='%d/%m/%Y')

# 2. 使用melt进行列转行,保留Current_date和ID作为标识列
melted_df = df.melt(
    id_vars=['Current_date', 'ID'],
    value_vars=['Current_date+1', 'Current_Date+2'],
    var_name='Date_offset',
    value_name='Value'
)

# 3. 根据Date_offset列计算对应的Date列
melted_df['Date'] = melted_df.apply(
    lambda row: row['Current_date'] + pd.Timedelta(days=1) if row['Date_offset'] == 'Current_date+1' 
                else row['Current_date'] + pd.Timedelta(days=2),
    axis=1
)

# 4. 调整列顺序,并且把日期转回原格式(如果需要的话)
result_df = melted_df[['Current_date', 'ID', 'Date', 'Value']]
result_df['Current_date'] = result_df['Current_date'].dt.strftime('%d/%m/%Y')
result_df['Date'] = result_df['Date'].dt.strftime('%d/%m/%Y')

# 查看结果
print(result_df)

运行后得到的结果就是你想要的结构:

Current_dateIDDateValue
19/10/20211120/10/20210.9
19/10/20211120/10/20210.7
19/10/20211220/10/20211.0
19/10/20211320/10/20210.8
19/10/20211121/10/20210.8
19/10/20211121/10/20210.6
19/10/20211221/10/20211.5
19/10/20211321/10/20210.5

代码解释

  • 转datetime类型:把字符串格式的日期转成Pandas的datetime类型,这样才能方便地进行天数加法操作。
  • melt函数:这是Pandas处理宽表转长表的常用工具,id_vars指定要保留的标识列,value_vars指定要转成行的目标列,var_name和value_name分别设置新生成的列名。
  • 日期计算:用apply结合lambda函数,根据Date_offset的取值给原始日期加1天或2天,生成目标Date列。
  • 调整列顺序和格式:最后把列调整成你需要的顺序,并且把datetime类型转回原来的字符串格式(如果不需要格式化可以省略这一步)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 20:24:06