熊猫的日期和月份混合

时间:2020-04-06 15:03:42

标签: python pandas date

在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

有人可以提供有关如何以适当方式设置日期列格式的输入吗?谢谢

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