【问题标题】:pandas read_parquet imports date field incorrectlypandas read_parquet 错误地导入日期字段
【发布时间】:2021-05-29 20:19:05
【问题描述】:

我有一个名为 BusinessDate 的镶木地板文件,其中包含一个日期字段。当我将其导入数据框时,它会自动确定字段 BusinessDate 为日期(datetime64 [ns,UTC])。 但是,由于此 BusinessDate 字段的格式为 YYYY-MM-DD,因此其中一些日期被错误地导入。例如。 2013-02-01 应该是 2013 年 2 月的第一个,而实际上它被解释为 2013 年 1 月的第二个。 导入parquet文件时是否可以设置BusinessDate字段的正确格式?

最初我使用的是:

df.read_parquet('data.parquet')

如果我有一个 csv 文件,我的解决方案是:

custom_date_parser = lambda x: datetime.strptime(x, '%Y-%m-%d')
df.read_csv('data.csv',parse_dates=['BusinessDate'], date_parser=custom_date_parser)

但是,当我尝试使用类似代码来尝试修复日期问题时,它会给出错误:

custom_date_parser = lambda x: datetime.strptime(x, '%Y-%m-%d')
df.read_parquet('data.parquet',parse_dates=['BusinessDate'], date_parser=custom_date_parser)

错误是由于 read_parquet 函数没有 parse_dates 或 date_parser 属性引起的,例如read_csv 函数确实有。

所以我的问题是:如何在 pandas 中导入 parquet 文件,以便将“BusinessDate”字段正确导入为正确格式的日期,在我的情况下为 YYYY-MM-DD。或者,如果使用 pandas read_parquet 函数无法做到这一点,是否可以将“BusinessDate”字段作为字符串字段导入 pandas 数据框中,以便我之后可以更改它。

【问题讨论】:

    标签: python pandas date parquet


    【解决方案1】:

    很好的问题。 Pandas 还没有这方面的功能。

    一旦您阅读了镶木地板,我建议您像这样使用您的 lambda 函数:

    df['new_col'] = df['col'].apply(lambda x: datetime.strptime(x, '%Y-%m-%d'))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-07
      • 1970-01-01
      • 1970-01-01
      • 2015-01-29
      • 2020-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多