私はのようになりますパンダのDATAFRAMEていなく、マルチインデックス列にメルト:私は基本的にはデータフレームをmelt
したいパンダは、手動で指定レベル(Pythonの3.5.1)
df = pd.DataFrame({'col1': {0: 'a', 1: 'b', 2: 'c'},
'col2': {0: 1, 1: 3, 2: 5},
'col3': {0: 2, 1: 4, 2: 6},
'col4': {0: 3, 1: 6, 2: 2},
'col5': {0: 7, 1: 2, 2: 3},
'col6': {0: 2, 1: 9, 2: 5},
})
df.columns = [list('AAAAAA'), list('BBCCDD'), list('EFGHIJ')]
A
B C D
E F G H I J
0 a 1 2 3 7 2
1 b 3 4 6 2 9
2 c 5 6 2 3 5
をするように、各列レベルが新しい列になります。言い換えれば、私はpd.melt()
と私はかなり単純に欲しいものを達成することができます:
pd.melt(df, value_vars=[('A', 'B', 'E'),
('A', 'B', 'F'),
('A', 'C', 'G'),
('A', 'C', 'H'),
('A', 'D', 'I'),
('A', 'D', 'J')])
しかし、私の本当のユースケースには、そこに多くの初期の列が(6よりも多く)であり、場合、それは素晴らしいことです私はこの一般化可能にすることができたので、正確にタプルをvalue_vars
に指定する必要はありませんでした。一般化可能な方法でこれを行う方法はありますか?私は基本的にpd.melt
にちょうどvalue_vars
をタプルのリストに設定したいと言う方法を探しています。各タプルで最初の要素が最初の列レベルで、2番目が2番目の列レベルで、3番目の要素が3番目の列レベル。