Как анализировать фреймы данных на основе даты - PullRequest
0 голосов
/ 07 июня 2018

У меня есть фрейм данных pandas со стоковой информацией о Google.Индексом фрейма данных является дата (с 2004-08-19 по 2018-05-05).Я хотел бы разделить данные на основе года и сохранить итоговую стоимость акций в новом фрейме данных.Столбцы нового фрейма данных должны быть следующими [2004, 2005, 2006, ... 2017, 2018].Строки фрейма данных должны содержать значение закрытия цены акций для каждого дня конкретного года.

Как этого достичь?

Заранее спасибо

1 Ответ

0 голосов
/ 07 июня 2018

Вы можете создать MultiIndex с помощью DatetimeIndex.strftime и DatetimeIndex.year, а затем изменить его на unstack:

rng = pd.date_range('2004-08-19', periods=10, freq='6MS')
df = pd.DataFrame({'Price': range(10)}, index=rng)  
print (df)
            Price
2004-09-01      0
2005-03-01      1
2005-09-01      2
2006-03-01      3
2006-09-01      4
2007-03-01      5
2007-09-01      6
2008-03-01      7
2008-09-01      8
2009-03-01      9

df.index = [df.index.strftime('%m-%d'), df.index.year]
df = df['Price'].unstack()
print (df)
       2004  2005  2006  2007  2008  2009
03-01   NaN   1.0   3.0   5.0   7.0   9.0
09-01   0.0   2.0   4.0   6.0   8.0   NaN

Аналогичное решение, но столбцы лет являются строками:

df.index = df.index.astype(str).str.split('-', 1, expand=True)
df = df['Price'].unstack(0)
print (df)
       2004  2005  2006  2007  2008  2009
03-01   NaN   1.0   3.0   5.0   7.0   9.0
09-01   0.0   2.0   4.0   6.0   8.0   NaN
...