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

Мне удалось преобразовать свои ежедневные данные в еженедельные, просмотрев предыдущий ответ, но я устанавливаю дату в качестве индекса.Моя цель - сохранить «Symbol» в качестве индекса и включить «Date» в качестве столбца.

Я пытался включить «Date» в словарь и Symbol в качестве индекса, но это приводит к ошибке, чтоИндекс должен быть Datetime.

Это мой код:

if ( data_duration == 'w' ):

    df['Date'] = pd.to_datetime(df['Date'])
    df.set_index('Date', inplace=True)
    df.sort_index(inplace=True)



def take_first(array_like):
    return array_like[0]

def take_last(array_like):
    return array_like[-1]

output = df.resample('W',                                 # Weekly resample
                    how={'Open': take_first, 
                         'High': 'max',
                         'Low': 'min',
                         'Close': take_last,
                         'Volume': 'sum'}, 
                    loffset=pd.offsets.timedelta(days=-6))  # to put the labels to Monday

df = output[['Open', 'High', 'Low', 'Close', 'Volume']]

Но я хочу сохранить свой индекс как «Символ», как в ежедневных данных, включая дату в «Вывод».

Вот так выглядят ежедневные данные:

             Date       Close      High       Low      Open    Volume
Symbol                                                            
AAPL        2017-05-25  153.87  154.3500   153.0300      153.7300      19235598
AAPL        2017-05-26  153.61  154.2400  153.3100      154.0000      21927637

Однако после еженедельного форматирования все остается без изменений, кроме «Символа».Как я могу это исправить?

1 Ответ

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

Вы хотите unstack(): https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.unstack.html

Он переместит один из уровней индекса в столбец в кадре данных.Как то так:

 df.unstack('Date')
...