Python将日期和时间转换为熊猫索引

时间:2019-04-02 09:57:49

标签: python pandas datetime

我想将datetime列转换为pandas数据框索引。这是我的数据框

    Date               Observed Min Max Sum Count
0   09/15/2018 12:00:00 AM  2   0   2   10  5
1   09/15/2018 01:00:00 AM  1   0   2   25  20
2   09/15/2018 02:00:00 AM  1   0   1   21  21
3   09/15/2018 03:00:00 AM  1   0   2   23  22
4   09/15/2018 04:00:00 AM  1   0   1   21  21

我希望日期成为数据框的索引。

我一直在寻找答案,并尝试过这段代码

dateparse = lambda dates: pd.datetime.strptime(dates, '%m/%d/%Y %I:%M:%S').strftime('%m/%d/%Y %I:%M:%S %p')
data = pd.read_csv('mandol.csv', sep=';', parse_dates=['Date'], index_col = 'Date', date_parser=dateparse)
data.head()

但结果仍然是错误-> ValueError: unconverted data remains: AM

我该如何解决?

4 个答案:

答案 0 :(得分:3)

使用pd.to_datetime()转换 Date 列,并使用set_index()将其设置为数据框索引。

import pandas as pd

>>>df
    Date               Observed Min Max Sum Count
0   09/15/2018 12:00:00 AM  2   0   2   10  5
1   09/15/2018 01:00:00 AM  1   0   2   25  20
2   09/15/2018 02:00:00 AM  1   0   1   21  21
3   09/15/2018 03:00:00 AM  1   0   2   23  22
4   09/15/2018 04:00:00 AM  1   0   1   21  21

df.Date = pd.to_datetime(df.Date)
df.set_index('Date', inplace=True)

>>>df
                     Unnamed: 0  Observed  Min  Max  Sum  Count
Date
2018-09-15 00:00:00           0         2    0    2   10      5
2018-09-15 01:00:00           1         1    0    2   25     20
2018-09-15 02:00:00           2         1    0    1   21     21
2018-09-15 03:00:00           3         1    0    2   23     22
2018-09-15 04:00:00           4         1    0    1   21     21

答案 1 :(得分:1)

看看set_index()方法。

答案 2 :(得分:1)

我们可以将索引设置为Date转换后的to_datetime列值(我使用pop来获取Date列的值并将其从中删除同时添加DataFrame):

df.index = pd.to_datetime(df.pop('Date'))

print(df)

输出:

                     Observed  Min  Max  Sum  Count
Date                                               
2018-09-15 00:00:00         2    0    2   10      5
2018-09-15 01:00:00         1    0    2   25     20
2018-09-15 02:00:00         1    0    1   21     21
2018-09-15 03:00:00         1    0    2   23     22
2018-09-15 04:00:00         1    0    1   21     21

答案 3 :(得分:0)

如果使用此代码,它将第二列(日期)设置为索引,并使用pandas.to_datetime提供的标准日期时间解析器对其进行转换:

ds = pd.read_csv('mandol.csv', sep=';', index_col=1, parse_dates=True)

parse_dates=True自动将索引转换为熊猫Datetime对象。