Я пытаюсь преобразовать этот 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.
Я, вероятно, подхожу к этой проблеме с неправильного угла.Видите ли вы другие способы достижения этой трансформации?