如何在Python CSV中将dd/mm/yyyy格式日期转换为天数
将CSV中dd/mm/yyyy格式日期转换为连续天数(以2001-01-01为第1天)
解决步骤与代码示例
要实现需求,核心是先把CSV里的日期字符串转为datetime类型,再和基准日期(2001-01-01)计算时间差,最后调整为从1开始的连续天数:
import pandas as pd # 1. 读取CSV并解析日期列(假设日期列名为'date') # dayfirst=True 确保dd/mm/yyyy格式被正确解析 prices_df = pd.read_csv('your_data.csv', parse_dates=['date'], dayfirst=True) # 如果读取时未解析日期,可后续单独转换: # prices_df['date'] = pd.to_datetime(prices_df['date'], format='%d/%m/%Y') # 2. 定义基准日期 base_date = pd.to_datetime('2001-01-01') # 3. 计算连续天数:时间差的天数 +1(保证基准日为第1天) prices_df['continuous_days'] = (prices_df['date'] - base_date).dt.days + 1
关键说明
- 日期解析正确性:必须指定
dayfirst=True或format='%d/%m/%Y',否则pandas会默认按mm/dd/yyyy解析,导致日期错乱(比如把01/02/2001识别为2001年1月2日而非2月1日)。 - 为什么加1:基准日与自身的时间差是0天,加1后对应示例中的第1天,符合需求逻辑。
- 原代码问题:你之前的代码直接对
days列调用.dt.days是错误的——.dt.days仅适用于timedelta类型,而不是datetime类型;同时用'01/01/2001'作为新列名也不符合语义,建议改为continuous_days这类清晰的名称。
内容的提问来源于stack exchange,提问作者Dera
相关产品推荐
相关产品推荐

