我有一个parquet文件,其中有一个日期字段,名为'BusinessDate'
。当我将其导入到dataframe时,它会自动确定字段BusinessDate为日期(datetime64[ns, UTC]
)。
但是,由于此'BusinessDate'
字段的格式为'YYYY-MM-DD'
,因此其中一些日期被错误地导入。例如,2013-02-01应该是2013年2月1日,而实际上它被解释为2013年1月2日。
导入 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.DataFrame
中的字符串字段,以便我可以在之后更改它?
2条答案
按热度按时间gk7wooem1#
问得好。Pandas还没有这方面的功能。
一旦你阅读了parquet,我建议你像这样使用lambda函数:
hl0ma9xz2#
pd.to_datetime
,并设置format
参数,该参数是现有格式,而不是所需格式。format
代码可以在strftime()
和strptime()
代码中找到.read_parquet
将parquetdate
文件解释为datetime
(并添加时间组件),则使用.dt
访问器仅提取date
组件,并将其分配回列。