невозможно проанализировать индекс в пандах по дате - PullRequest
0 голосов
/ 26 октября 2018

Я прочитал несколько сообщений SO и не смог решить эту проблему. У меня есть фрейм данных, охватывающий несколько недель

2018-10-25 16:00:03.003 tag1   6
2018-10-25 16:00:03.003 tag2   10
2018-10-25 16:00:03.003 tag3   11
2018-10-25 16:00:03.003 tag4   12
2018-10-25 16:00:03.003 tag5   9
....

Это было создано с

df = pd.concat([pd.read_csv(f,names=['time','tag','value'],index_col=0,parse_dates=True) for f in glob.glob(path)],
                   sort=False)

Когда я пытаюсь вернуть только один день по индексу с df.loc['2018-10-25'], возвращается KeyError: u'the label ['2018-10-25'] не в [index]

Как мне извлечь по дням с помощью этого метода Выход df.index() is TypeError: Index is not callable ?

По предложению @ALollz, удалив парсаты и выполнив:

df['time'] = pd.to_datetime(df['time'],errors='coerce')
df.set_index('time',inplace=True)

, который возвращает KeyError: time

1 Ответ

0 голосов
/ 26 октября 2018

Проблема в вашем разделителе. Ваш файл разделен пробелом, но по умолчанию CSV - запятая (шлепок). В результате ваш входной анализ - без запятых - сохраняет всю строку в качестве входного значения для одного столбца. df.index ясно показывает это:

Index(['2018-10-25 16:00:03.003 tag1   6', 
       '2018-10-25 16:00:03.003 tag2   10',
       '2018-10-25 16:00:03.003 tag3   11',
       '2018-10-25 16:00:03.003 tag4   12',
       '2018-10-25 16:00:03.003 tag5   9'],
      dtype='object', name='time')

В результате входные данные не анализируются как дата и не могут быть найдены с помощью средств даты в Pandas.

Либо вставьте запятые в набор данных, как ожидает текущий анализ, либо укажите пробел в качестве разделителя файлов. В результате получается индекс

DatetimeIndex(['2018-10-25 16:00:03.003000', '2018-10-25 16:00:03.003000',
               '2018-10-25 16:00:03.003000', '2018-10-25 16:00:03.003000',
               '2018-10-25 16:00:03.003000'],
              dtype='datetime64[ns]', name='time', freq=None)

... и ваша команда поиска по дате красиво возвращается:

                           tag  value
time                                 
2018-10-25 16:00:03.003   tag1      6
2018-10-25 16:00:03.003   tag2     10
2018-10-25 16:00:03.003   tag3     11
2018-10-25 16:00:03.003   tag4     12
2018-10-25 16:00:03.003   tag5      9
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...