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

如何在Pandas中为‘fechas’列设置日期格式以开展数据分析?

嘿,我来帮你搞定这个Pandas日期格式转换的问题!先把你提供的样本数据整理成更清晰的表格,方便我们理解:

你的样本数据

索引FECHAAÑONOMBRE
03 de agosto, 20172017.0Ley 1831 de 2017
11 de febrero, 20172017.0Ley 1823 del 4 de enero de 2017
21 de febrero, 20172017.0Ley 1822 del 4 de enero de 2017
38 de febrero, 20172016.0Ley 1815 de 2016
41 de febrero, 20172016.0Ley 1805 del 4 de agosto de 2016
51 de febrero, 20172016.0Ley 1799 del 25 de julio de 2016

你的FECHA列是西班牙语日期格式,Pandas默认识别不了agosto、febrero这类非英文月份名,所以需要针对性处理,下面是几种实用方法:


方法1:设置西班牙语区域后指定格式解析(推荐)

先把系统区域设置为西班牙语,让Pandas能识别西班牙语月份,再用pd.to_datetime指定格式字符串:

import pandas as pd
import locale

# 根据你的操作系统设置对应locale:
# Linux/macOS 用 'es_ES.UTF-8',Windows 用 'Spanish_Spain.1252'
try:
    locale.setlocale(locale.LC_TIME, 'es_ES.UTF-8')
except:
    locale.setlocale(locale.LC_TIME, 'Spanish_Spain.1252')

# 假设你的DataFrame名为df,转换FECHA列
df['FECHA'] = pd.to_datetime(df['FECHA'], format='%d de %B, %Y')

# 验证转换结果
print(df['FECHA'])

方法2:手动映射月份名称(无需依赖系统locale)

如果设置locale遇到问题,可以手动创建西班牙语月份到英文的映射,替换后再解析:

import pandas as pd

# 西班牙语月份 → 英文月份的映射字典
month_translate = {
    'enero': 'January',
    'febrero': 'February',
    'marzo': 'March',
    'abril': 'April',
    'mayo': 'May',
    'junio': 'June',
    'julio': 'July',
    'agosto': 'August',
    'septiembre': 'September',
    'octubre': 'October',
    'noviembre': 'November',
    'diciembre': 'December'
}

# 替换FECHA列中的西班牙语月份
df['FECHA'] = df['FECHA'].replace(month_translate.keys(), month_translate.values(), regex=True)
# 现在用英文格式解析
df['FECHA'] = pd.to_datetime(df['FECHA'], format='%d de %B, %Y')

print(df['FECHA'])

方法3:让Pandas自动推断格式(适合小数据集)

如果你的数据量不大,也可以让Pandas自动尝试解析日期,不用手动指定格式,缺点是速度稍慢:

df['FECHA'] = pd.to_datetime(df['FECHA'], infer_datetime_format=True)

额外注意事项

  • 如果FECHA列存在异常格式或缺失值,可以加上errors='coerce'参数,把无法解析的日期转为NaT(Pandas的缺失日期类型):
    df['FECHA'] = pd.to_datetime(df['FECHA'], format='%d de %B, %Y', errors='coerce')
    
  • 转换完成后,你可以用df['FECHA'].dt来访问日期的各种属性,比如:
    • df['FECHA'].dt.year:提取年份
    • df['FECHA'].dt.month_name(locale='es_ES.UTF-8'):重新获取西班牙语月份名称
    • df['FECHA'].dt.day:提取日期天数

内容的提问来源于stack exchange,提问作者Sebastián Ramírez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:06:33