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

如何用Python将CSV中日月格式列值转换为指定数字格式?

解决CSV中Room列日月格式转数字格式的问题

需求说明

需要将CSV文件中Room列的日月格式(如1-Feb、3-Mar)转换为月份数字-日期数字的格式,对应规则示例:

  • 1-Feb → 2-1
  • 2-Feb → 2-2
  • 3-Mar → 3-3
  • 4-Mar → 3-4

修改后的完整代码

import os
import pandas as pd

# 定义月份缩写到数字的映射字典
month_map = {
    'Jan': '1', 'Feb': '2', 'Mar': '3',
    'Apr': '4', 'May': '5', 'Jun': '6',
    'Jul': '7', 'Aug': '8', 'Sep': '9',
    'Oct': '10', 'Nov': '11', 'Dec': '12'
}

def convert_room_format(room_str):
    # 拆分日期和月份部分,比如"1-Feb"拆分为["1", "Feb"]
    day, month_abbr = room_str.split('-')
    # 替换月份缩写为对应数字,再拼接成目标格式
    return f"{month_map[month_abbr]}-{day}"

directory = 'C:/Path'
ext = ('.csv')

for filename in os.listdir(directory):
    f = os.path.join(directory, filename)

    if f.endswith(ext):
        head_tail = os.path.split(f)
        head_tail1 = 'C:/Path'
        k = head_tail[1]
        r = k.split(".")[0]

        p = head_tail1 + "/" + r + " - Revised.csv"
        mydata = pd.read_csv(f)

        # 提取目标列
        new = mydata[["A","Room","C","D"]]
        
        # 核心:转换Room列格式
        new['Room'] = new['Room'].apply(convert_room_format)
        
        # 后续原有逻辑保持不变
        new = new.rename(columns={'D': 'Qty. of Parts'})
        new['Qty. of Parts'] = 1

        # 合并列逻辑(新增类型转换确保拼接正常)
        merge_columns = ['A', 'Room', 'C']
        merged_col = ''.join(merge_columns).replace('ARoomC', 'F')
        new[merged_col] = new[merge_columns].apply(lambda x: '.'.join(x.astype(str)), axis=1)

        new.drop(merge_columns, axis=1, inplace=True)
        new = new.groupby(merged_col).count().reset_index()
        new.to_csv(p, index=False)

关键修改说明

  1. 月份映射字典:提前定义全量英文月份缩写对应的数字,确保转换时能准确匹配所有可能的月份
  2. 转换函数:通过split('-')拆分日期和月份,用映射字典替换缩写为数字后拼接成目标格式
  3. 批量转换:用pandas的apply方法对Room列逐行应用转换函数,实现批量处理
  4. 类型兼容处理:合并列时新增astype(str),确保所有列都转为字符串后再拼接,避免因类型不一致导致的报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 12:20:35