Объединение нескольких групп столбцов одновременно - PullRequest
0 голосов
/ 24 июня 2018

Я пытаюсь преобразовать этот DataFrame

         date  foo1  foo2  foo3  bar1  bar2  bar3
0  2018-06-01   0.1   0.2   0.3   0.4   0.5   0.6
1  2018-06-02   1.1   1.2   1.3   1.4   1.5   1.6

в этот

         date  i  foo  bar
0  2018-06-01  1  0.1  0.4
1  2018-06-01  2  0.2  0.5
2  2018-06-01  3  0.3  0.6
3  2018-06-02  1  1.1  1.4
4  2018-06-02  2  1.2  1.5
5  2018-06-02  3  1.3  1.6

Другими словами: я хочу расположить столбцы fooX и barX по вертикалии добавьте столбец i, содержащий X.

В качестве первого шага я попытался создать MultiIndex для разделения столбцов на два уровня:

index = pd.MultiIndex.from_product([('foo', 'bar'), (1, 2, 3)],
                                   names=('metric', 'i'))
df.columns = index

Однако это не удается, поскольку столбец date не включен в MultiIndex:

ValueError: Length mismatch: Expected axis has 7 elements, new values have 6 elements

Можно ли включить одноуровневый столбец в двухуровневый MultiIndex?Я пробовал index.append(pd.Index(['date']), но это опускает второй уровень MultiIndex.

Я, вероятно, подхожу к этой проблеме с неправильного угла.Видите ли вы другие способы достижения этой трансформации?

1 Ответ

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

Само задание pd.wide_to_long

pd.wide_to_long(df, ["foo", "bar"], i="date", j="id")

               foo  bar
date       id          
2018-06-01 1   0.1  0.4
2018-06-02 1   1.1  1.4
2018-06-01 2   0.2  0.5
2018-06-02 2   1.2  1.5
2018-06-01 3   0.3  0.6
2018-06-02 3   1.3  1.6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...