如何在Python中处理DataFrame的日期字符串转换(迁移R代码逻辑)
解决DataFrame日期列格式转换问题
针对你需要将DataFrame中格式为2022.10.31的日期字符串转为2022-10-31再转成日期类型的需求,这里提供两种简洁的Python实现方式,同时纠正你之前代码的问题:
方法一:直接替换分隔符(最简便)
利用pandas的字符串替换方法,把.换成-,再通过pd.to_datetime直接转换为日期类型:
import pandas as pd # 替换分隔符并转换日期 depoziti['ddospevanje'] = pd.to_datetime(depoziti['ddospevanje'].str.replace('.', '-', regex=False))
这里regex=False是为了避免把.当作正则表达式的通配符,确保只替换字面意义的点号。
方法二:按位置截取拼接(对应你的R逻辑)
如果你想复刻R中截取年、月、日再拼接的逻辑,可以用pandas的str.slice方法处理每个字符串的字符,再拼接转换:
import pandas as pd # 分别截取年、月、日部分 year = depoziti['ddospevanje'].str.slice(0, 4) # 取前4位(年份) month = depoziti['ddospevanje'].str.slice(5, 7) # 取第5-6位(月份,索引从0开始) day = depoziti['ddospevanje'].str.slice(8, 10) # 取第8-9位(日期) # 拼接为yyyy-mm-dd格式并转日期 depoziti['ddospevanje'] = pd.to_datetime(year.str.cat([month, day], sep='-'))
你之前代码的问题
你写的depoziti['ddospevanje'].loc[0:4]是选取DataFrame的第0到4行,而不是每个字符串的前4个字符。处理DataFrame整列的字符串操作,必须用pandas的str访问器(比如str.slice、str.replace),这样才能对列中每个元素单独执行字符串操作。
内容的提问来源于stack exchange,提问作者S_Star
相关产品推荐
相关产品推荐

