Преобразовать формат временного ряда - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть набор данных (df) временных рядов, как показано ниже:

date          symbol   close
09/01/2018    ACA      132.1
10/01/2018    ACA      134.4
...
28/04/2013    BA       22.12
...
21/01/2016    DIL      180.01
...

Идея состояла в том, чтобы преобразовать его следующим образом:

date          ACA      BA      DIL
28/04/2013    NaN      22.12   NaN
...
21/01/2016    NaN      23      180.01
...
...
...
10/01/2018    134.4    32.2    181.3

Итак, взяв самый длинный период временив первом столбце и сопоставьте цену закрытия с остальными.Я думаю, это можно сделать с помощью VLOOKUP() или MATCH().

Есть идеи?

1 Ответ

0 голосов
/ 26 апреля 2018

Вы можете сделать это с помощью Powerquery.

Шаг 1. Выберите заполненную ячейку в диапазоне данных. Перейдите на вкладку PowerQuery, если до Excel 2016 (и с установленной бесплатной надстройкой) или на вкладку Данные в 2016> Данные> Получить и преобразовать> из таблицы

image From table">

Шаг 2: Убедитесь, что столбец date отформатирован как Дата

Date column

Шаг 3: Порядок date столбец в порядке возрастания

Ascending column sort

Шаг 4: Выберите symbol столбец> вкладка Преобразование> столбец Pivot

Select column and choose pivot column

Убедитесь, что часть значений использует Close

Values using Close for pivot on Symbol column

Шаг 5: Переставьте столбцы по мере необходимости

Re-arranged columns

Шаг 6: Закройте и загрузите на страницу

Close and load (choose lower option of too page)

Примечание. Ноль не заменяется на NaN.При экспорте в лист эти ячейки будут пустыми.

M Код:

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"date", type date}, {"symbol", type text}, {"close", type number}}),
    #"Sorted Rows" = Table.Sort(#"Changed Type",{{"date", Order.Ascending}}),
    #"Pivoted Column" = Table.Pivot(#"Sorted Rows", List.Distinct(#"Sorted Rows"[symbol]), "symbol", "close", List.Sum),
    #"Reordered Columns" = Table.ReorderColumns(#"Pivoted Column",{"date", "ACA", "BA", "DIL"})
in
    #"Reordered Columns"
...