来自元组的不规则元组的MultiIndex

时间:2016-07-30 08:09:22

标签: python pandas multi-index

我有以下元组

tups = zip(list('AAAABBBB'), zip(list('aabbaabb'), list('cdcdcdcd')))

tups

[('A', ('a', 'c')),
 ('A', ('a', 'd')),
 ('A', ('b', 'c')),
 ('A', ('b', 'd')),
 ('B', ('a', 'c')),
 ('B', ('a', 'd')),
 ('B', ('b', 'c')),
 ('B', ('b', 'd'))]

我想从他们那里创建一个pandas MultiIndex

df = pd.DataFrame(np.arange(32).reshape(4, 8),
                  columns=pd.MultiIndex.from_tuples(tups))

但我在第二级获得元组。我如何获得所有三个级别?

print df

       A                           B                     
  (a, c) (a, d) (b, c) (b, d) (a, c) (a, d) (b, c) (b, d)
0      0      1      2      3      4      5      6      7
1      8      9     10     11     12     13     14     15
2     16     17     18     19     20     21     22     23
3     24     25     26     27     28     29     30     31

1 个答案:

答案 0 :(得分:1)

你必须弄平你的元组。我这样做了

new_tups = [(a, b, c) for a, (b, c) in tups]

df = pd.DataFrame(np.arange(32).reshape(4, 8),
                  columns=pd.MultiIndex.from_tuples(new_tups))

enter image description here