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

Pandas中根据月份名称生成对应日期列的技术实现问题

问题描述

现有如下DataFrame:

import pandas as pd
import numpy as np

df = pd.DataFrame({'Date data':['actual september 2019', 'September'],
                   'Date':['2019.12','2019.12']})

需求:新增一列New_column,规则如下:

  • 当Date data的值为单独月份名称(如'September')时,设为2019.XX格式的对应日期(如'September'对应'2019.09')
  • 其余情况直接沿用Date列的数值

期望输出:

df = pd.DataFrame({'Date data':['actual september 2019', 'September'],
                   'Date':['2019.12','2019.12'], 'New_column':['2019.12','2019.09']})

已定义变量:

month = ('April', 'December', 'February', 'January', 'July-August', 'June', 'March', 'May', 'November', ' October', 'September')

尝试执行的错误代码:

df.loc[df['Date data'].isin(month) , 'new_col'] = '2019.9
解决方案

步骤1:修正月份映射关系

把原月份元组改成带对应日期后缀的字典,同时修正原元组里' October'的前置空格问题,保证匹配准确:

month_map = {
    'April': '2019.04',
    'December': '2019.12',
    'February': '2019.02',
    'January': '2019.01',
    'July-August': '2019.07-08',  # 可根据需求调整格式
    'June': '2019.06',
    'March': '2019.03',
    'May': '2019.05',
    'November': '2019.11',
    'October': '2019.10',  # 去掉原前置空格
    'September': '2019.09'
}

步骤2:实现逻辑判断与赋值

用np.where完成条件判断和赋值,代码简洁高效:

import pandas as pd
import numpy as np

# 初始DataFrame
df = pd.DataFrame({'Date data':['actual september 2019', 'September'],
                   'Date':['2019.12','2019.12']})

# 修正后的月份映射字典
month_map = {
    'April': '2019.04',
    'December': '2019.12',
    'February': '2019.02',
    'January': '2019.01',
    'July-August': '2019.07-08',
    'June': '2019.06',
    'March': '2019.03',
    'May': '2019.05',
    'November': '2019.11',
    'October': '2019.10',
    'September': '2019.09'
}

# 新增列并赋值
df['New_column'] = np.where(
    df['Date data'].isin(month_map.keys()),  # 判断是否为单独月份名称
    df['Date data'].map(month_map),          # 匹配对应日期格式
    df['Date']                               # 其余情况沿用Date列值
)

步骤3:验证结果

执行后df的输出与预期一致:

Date data     Date New_column
0  actual september 2019  2019.12    2019.12
1              September  2019.12    2019.09

补充说明

  • 原尝试代码的问题:字符串闭合错误('2019.9缺少右引号)、硬编码固定值无法匹配不同月份、未处理' October'的前置空格导致匹配失败。
  • 若July-August需要其他格式,直接修改字典中对应的值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 10:30:29