J_P*_*_Py 5 python date pandas parquet
我有一个镶木地板文件,其中有一个名为 的日期字段'BusinessDate'。当我将其导入数据框时,它会自动确定字段 BusinessDate 为日期 ( datetime64[ns, UTC])。
但是,由于该字段的格式'BusinessDate'为'YYYY-MM-DD',因此其中一些日期导入不正确。例如,2013-02-01 应该是 2013 年 2 月 1 日,但实际上它被解释为 2013 年 1 月 2 日。
'BusinessDate'导入 parquet 文件时是否可以设置正确的字段格式?
最初我使用:
df.read_parquet('data.parquet')
Run Code Online (Sandbox Code Playgroud)
如果我有一个 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)
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用类似的代码来尝试修复日期问题时,它会出现错误:
custom_date_parser = lambda x: datetime.strptime(x, '%Y-%m-%d')
df.read_parquet('data.parquet',parse_dates=['BusinessDate'], date_parser=custom_date_parser)
Run Code Online (Sandbox Code Playgroud)
该错误是由于read_parquet函数没有parse_datesordate_parser属性而导致的,而read_csv函数却有。
所以我的问题是:如何在 pandas 中导入镶木地板文件,以便在我的情况'BusinessDate'下以正确的格式将字段正确导入为日期'YYYY-MM-DD'。或者,如果 pandas 函数无法做到这一点read_parquet,是否可以将该'BusinessDate'字段作为字符串字段导入到 a 中pandas.DataFrame,以便之后可以更改它?
小智 3
很好的问题。Pandas 还没有这方面的功能。
阅读 parquet 后,我建议您使用 lambda 函数,如下所示:
df['new_col'] = df['col'].apply(lambda x: datetime.strptime(x, '%Y-%m-%d'))
Run Code Online (Sandbox Code Playgroud)