You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 19:40:27