У меня есть следующие Timeseries
данные.
price_per_year.head()
price
date
2013-01-02 20.08
2013-01-03 19.78
2013-01-04 19.86
2013-01-07 19.40
2013-01-08 19.66
price_per_year.info()
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 782 entries, 2013-01-02 to 2015-12-31
Data columns (total 1 columns):
price 756 non-null float64
dtypes: float64(1)
memory usage: 12.2 KB
Я пытаюсь извлечь данные за 3 года, используя приведенный ниже код. Почему я получаю KeyError: '2014'
, когда данные, как показано ниже, явно содержат «2014». Оцените любые входные данные.
price_per_year['2014'].head()
price
date
2014-01-01 NaN
2014-01-02 39.59
2014-01-03 40.12
2014-01-06 39.93
2014-01-07 40.92
prices = pd.DataFrame()
for year in ['2013', '2014', '2015']:
price_per_year = price_per_year.loc[year, ['price']].reset_index(drop=True)
price_per_year.rename(columns={'price': year}, inplace=True)
prices = pd.concat([prices, price_per_year], axis=1)
KeyError: '2014'
Строка кода price_per_year.loc['2014', ['price']]
при независимом использовании вне for loop
работает нормально, а price_per_year['price'][year]
при использовании в for loop
не работает.
for year in ['2013', '2014', '2015']:
price_per_year = price_per_year['price'][year].reset_index(drop=True)
KeyError: 'price'
Обе строки кода price_per_year.loc[price_per_year.index.year == 2014, ['price']]
при независимом использовании вне for loop
и price_per_year.loc[price_per_year.index.year == year, ['price']]
внутри for loop
дают ошибки.
for year in ['2013', '2014', '2015']:
price_per_year.loc[price_per_year.index.year == '2014', ['price']].reset_index(drop=True)
TypeError: Cannot convert input [False] of type <class 'bool'> to Timestamp