使用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
相关产品推荐
相关产品推荐

