如何使用datetime在pandas DataFrame中新增星期几名称列
错误原因
vacinacao['Data Vacinacao']是Pandas的Series(列)对象,本身没有days属性,操作日期类的列需要先通过.dt访问器调用datetime相关的属性和方法。- 原有写法里的
weekday.()多了多余的点,属于语法错误。
正确实现步骤
1. 先确保日期列是datetime类型
先做类型转换,避免读取Excel时识别为字符串类型导致后续操作报错:
vacinacao['Data Vacinacao'] = pd.to_datetime(vacinacao['Data Vacinacao'])
2. 生成星期对应名称
你已经定义好了对应葡萄牙语的星期列表,直接用.dt.weekday获取0-6的星期索引(0对应周一,正好匹配你的列表顺序),再做映射即可:
# 方法1:两步实现,先存索引再映射名称 vacinacao['dia_semana_idx'] = vacinacao['Data Vacinacao'].dt.weekday vacinacao['dia_semana'] = vacinacao['dia_semana_idx'].map(days) # 方法2:一步实现 vacinacao['dia_semana'] = vacinacao['Data Vacinacao'].dt.weekday.map(lambda x: days[x])
运行后dia_semana列就会生成对应的葡萄牙语星期名称,你给出的样例数据中2021-01-18为周一,对应值就是Segunda-feira,和预期一致。
内容的提问来源于stack exchange,提问作者Lucas Thaynan
相关产品推荐
相关产品推荐

