Использование Pandas dataframe для обработки данных списка приводит к ошибке loc - PullRequest
1 голос
/ 07 октября 2019

Я использую Панды для обработки данных Списка. Данные списка

[(datetime.date(1992, 2, 1), 114535.0), (datetime.date(1992, 3, 1), 120025.0), (datetime.date(1992, 4, 1), 124470.0), (datetime.date(1992, 5, 1), 125822.0), (datetime.date(1992, 6, 1), 122834.0)]

Я создаю метки и использую DataFrame.from_records для чтения данных

labels = ['date', 'value']
df = pd.DataFrame.from_records(listData, columns=labels)

df = df.set_index('date')
print(df.loc['1992-03-01'])

Я получил следующую ошибку, используя df.loc

  File "/usr/lib64/python3.6/site-packages/pandas/core/indexes/base.py", line 2890, in get_loc
    return self._engine.get_loc(key)
  File "pandas/_libs/index.pyx", line 107, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/index.pyx", line 131, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/hashtable_class_helper.pxi", line 1607, in pandas._libs.hashtable.PyObjectHashTable.get_item
  File "pandas/_libs/hashtable_class_helper.pxi", line 1614, in pandas._libs.hashtable.PyObjectHashTable.get_item
KeyError: '1992-03-01'

1 Ответ

2 голосов
/ 07 октября 2019

Создать DatetimeIndex с to_datetime для преобразования dates objects в timestamp s:

labels = ['date', 'value']
df = pd.DataFrame.from_records(listData, columns=labels)

df['date'] = pd.to_datetime(df['date'])
df = df.set_index('date')
print(df.loc['1992-03-01'])
value    120025.0
Name: 1992-03-01 00:00:00, dtype: float64

Или поиск по дате объектов:

labels = ['date', 'value']
df = pd.DataFrame.from_records(listData, columns=labels)

df = df.set_index('date')
print(df.loc[datetime.date(1992, 3, 1)])
value    120025.0
Name: 1992-03-01, dtype: float64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...