【问题标题】:pandas reading dates from csv in yy-mm-dd format大熊猫以 yy-mm-dd 格式从 csv 读取日期
【发布时间】:2015-11-14 21:24:52
【问题描述】:

我有一个日期格式为 dd-mmm-yy 的 csv 文件,我想以 yyyy-mm-dd 格式读取。解析日期选项有效,但在 2000 年之前无法正确转换日期 示例:实际日期为 1968 年 8 月 1 日。它显示为 01-Aug-68。 Pandas date parase and correction=true 读取日期为 01-Aug-2068。

对于 2000 年之前的日期,是否有任何选项可以以正确格式读取 pandas 中的日期。

【问题讨论】:

  • 我不知道 pandas 是如何引入 dateutil 的,但 this issue 可能是一个起点。
  • 你用的是什么版本的熊猫? 0.16.2 pd.to_datetime('01-Aug-68') 给我Timestamp('1968-08-01 00:00:00')
  • 请发布样本原始输入数据以避免任何歧义

标签: python date csv pandas formats


【解决方案1】:
from dateutil.relativedelta import relativedelta
import datetime

假设您有一个这样的 csv:

mydates
18-Aug-68
13-Jul-45
12-Sep-00
20-Jun-10
15-Jul-60

定义日期格式

d = lambda x: pd.datetime.strptime(x, '%d-%b-%y')

限制他们

dateparse = lambda x: d(x) if d(x) < datetime.datetime.now() else d(x) - relativedelta(years=100) 

阅读您的 csv:

df = pd.read_csv("myfile.csv", parse_dates=['mydates'], date_parser=dateparse)

这是你的结果:

print df

     mydates
0 1968-08-18
1 1945-07-13
2 2000-09-12
3 2010-06-20
4 1960-07-15

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 2020-02-29
    • 2022-11-19
    • 1970-01-01
    • 2021-12-31
    • 1970-01-01
    相关资源
    最近更新 更多