AttributeError报错:'Timestamp'对象无'weekday_name'属性 求助
解决AttributeError: 'Timestamp' object has no attribute 'weekday_name'问题
错误原因
新版pandas已弃用并移除了Timestamp.weekday_name属性,取而代之的是day_name()方法。你代码中调用的weekday_name属于旧版属性,因此触发报错。
修正方案
有两种可行的修正方式,其中第二种更高效:
方式一:修改lambda中的调用方法
直接将x.weekday_name替换为x.day_name():
dfs['dayofweek'] = dfs['date'].apply(lambda x: x.day_name()) dfs['dayofweek'] = pd.Categorical(dfs['dayofweek'], categories=['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday','Saturday', 'Sunday'], ordered=True)
方式二:使用dt访问器(推荐)
借助pandas的dt访问器实现向量化操作,避免逐行循环的apply,处理大数据集时效率更高:
dfs['dayofweek'] = dfs['date'].dt.day_name() dfs['dayofweek'] = pd.Categorical(dfs['dayofweek'], categories=['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday','Saturday', 'Sunday'], ordered=True)
补充说明
dt.day_name()支持传入locale参数获取不同语言的星期名称,例如dfs['date'].dt.day_name(locale='zh_CN')可返回中文星期名。
内容的提问来源于stack exchange,提问作者Karthikeyan A
相关产品推荐
相关产品推荐

