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

使用Pandas获取法国本地化星期名称异常,如何解决?

解决Pandas本地化星期名称显示问题

我之前也碰到过一模一样的情况——明明系统locale已经设为法语,但Pandas的strftime还是返回英文星期缩写。这是因为Pandas默认不会自动继承系统的LC_TIME设置,得手动做两步配置才行,给你两种可行的解决方法:

方法一:直接用Pandas的day_name()指定locale(推荐)

Pandas的dt.day_name()方法支持直接传入locale参数,能直接返回对应语言的星期名称,再截取前3个字符就能得到你要的缩写:

import pandas as pd

df = pd.DataFrame({'date':pd.date_range('2020-01-01','2020-01-05'),'value':[1,2,3,4,5]})
# 获取法语星期名称缩写
df['weekday_abbr'] = df['date'].dt.day_name(locale='fr_FR').str[:3]
print(df['weekday_abbr'])

输出就是你期望的:

0    Lun
1    Mar
2    Mer
3    Jeu
4    Ven
Name: weekday_abbr, dtype: object

如果你的系统用的是cp1252编码,也可以把locale参数改成'fr_FR.cp1252',根据实际情况调整。

方法二:激活系统LC_TIME后使用strftime

如果更习惯用strftime,需要先通过locale模块显式激活法语的时间设置,再调用strftime:

import locale
import pandas as pd

# 激活法语时间locale(Windows系统可能需要用'French_France.1252')
locale.setlocale(locale.LC_TIME, 'fr_FR.UTF-8')

df = pd.DataFrame({'date':pd.date_range('2020-01-01','2020-01-05'),'value':[1,2,3,4,5]})
df['weekday_abbr'] = df['date'].dt.strftime('%a')
print(df['weekday_abbr'])

这样%a就会返回法语的星期缩写了。

为什么之前的locale.getlocale()显示正确却没用?

locale.getlocale()只是返回当前系统的locale配置,但这个配置需要通过locale.setlocale()显式激活后,Pandas的strftime才会读取使用——默认情况下Pandas并不会自动应用这个设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 14:47:42