Python конвертирует дату и время как индекс панд - PullRequest
1 голос
/ 02 апреля 2019

Я хочу преобразовать свой столбец даты и времени в индекс данных панд.Это мой фрейм данных

    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 ]

3 голосов
/ 02 апреля 2019

Используйте pd.to_datetime(), чтобы преобразовать столбец Дата и 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 голос
/ 02 апреля 2019

Мы можем установить индекс равным значениям столбца 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
1 голос
/ 02 апреля 2019

Взгляните на set_index() метод.

0 голосов
/ 02 апреля 2019

Если вы используете этот код, он устанавливает второй столбец (Дата) в качестве индекса и преобразует его с помощью стандартного анализатора даты и времени, предоставленного pandas.to_datetime:

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

parse_dates=True автоматически преобразует индекс в объект Datetime pandas.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...