在Pandas中,我试图将日期列从String格式化为正确的日期,以便可以将其导出到ElasticSearch。但是,日期和月份变得混乱。我在下面举了一个例子。
df = pd.DataFrame({'Date':['12/03/2020 0:00', '11/02/2019 0:00', '10/01/2020 0:00'],
'Event':['Music', 'Poetry', 'Theatre'],
'Cost':[10000, 5000, 15000]})
以dd / mm / YYYY格式输入日期。
df['Date1'] = df['Date'].astype('datetime64[ns]')
df['Year'] = pd.DatetimeIndex(df['Date']).year
df['Month'] = pd.DatetimeIndex(df['Date1']).month
df['Day'] = pd.DatetimeIndex(df['Date1']).day
df
这将导致以下日期和月份互换的数据帧。正确提取年份。
Date Event Cost Date1 Year Month Day
0 12/03/2020 0:00 Music 10000 2020-12-03 2020 12 3
1 11/02/2019 0:00 Poetry 5000 2019-11-02 2019 11 2
2 10/01/2020 0:00 Theatre 15000 2020-10-01 2020 10 1
有人可以提供有关如何以适当方式设置日期列格式的输入吗?谢谢
答案 0 :(得分:1)
您首先要使用pd.to_datetime()
将数据转换为实际日期时间:
df['Date'] = pd.to_datetime(df['Date'])
幸运的是,默认参数似乎可用于解析示例数据:
>>> df
Date Event Cost
0 2020-12-03 Music 10000
1 2019-11-02 Poetry 5000
2 2020-10-01 Theatre 15000
如果您需要单独的d / m / y列,则可以访问系列的dt
属性,而无需通过DatetimeIndex进行转换:
>>> df['Year'] = df['Date'].dt.year
>>> # ... etc ...
>>> df
Date Event Cost Year
0 2020-12-03 Music 10000 2020
1 2019-11-02 Poetry 5000 2019
2 2020-10-01 Theatre 15000 2020