MultiIndex と stack() に問題があります。次の例は、StackOvervlow に関するCalvin Cheungのソリューションに基づいています。
=== multi.csv ===
h1,main,h3,sub,h5
a,A,1,A1,1
b,B,2,B1,2
c,B,3,A1,3
d,A,4,B2,4
e,A,5,B3,5
f,B,6,A2,6
=== multi.py ===
#!/usr/bin/env python
import pandas as pd
df1 = pd.read_csv('multi.csv')
df2 = df1.pivot('main', 'sub').stack()
print(df2)
=== output ===
h1 h3 h5
main sub
A A1 a 1 1
B2 d 4 4
B3 e 5 5
B A1 c 3 3
A2 f 6 6
B1 b 2 2
これは、サブ列のエントリがメイン列の対応するエントリに対して一意である限り機能します。しかし、行 e のサブ列エントリを B2 に変更すると、B2 は A 行のグループ内で一意ではなくなり、次のエラー メッセージが表示されます。 .
サブ インデックスの形状は、プライマリ インデックスの形状と同じように動作することが期待されていました。最初の行エントリの下に空白のエントリが表示され、重複が示されます。
=== expected output ===
h1 h3 h5
main sub
A A1 a 1 1
B2 d 4 4
e 5 5
B A1 c 3 3
A2 f 6 6
B1 b 2 2
私の質問は、サブレベルでの重複を許可する方法で MultiIndex を構成するにはどうすればよいですか?