Python 按列值设置多索引

Python 按列值设置多索引,python,pandas,Python,Pandas,我有一个带有列的数据框架,我想通过将相同值的条目分组到一列中来创建一个多索引 A a 3 B c 2 A d 1 A e 4 B a 5 变成 A a 3 d 1 e 4 B c 2 a 5 您可以将索引设置为前两列,然后对其进行排序 # create data df = pd.DataFrame({'col1': {0: 'A', 1: 'B', 2: 'A', 3: 'A', 4: 'B'}, 'col2': {0: 'a', 1: 'c

我有一个带有列的数据框架,我想通过将相同值的条目分组到一列中来创建一个多索引

A a 3
B c 2
A d 1
A e 4
B a 5
变成

A a 3
  d 1
  e 4
B c 2
  a 5

您可以将索引设置为前两列,然后对其进行排序

# create data
df = pd.DataFrame({'col1': {0: 'A', 1: 'B', 2: 'A', 3: 'A', 4: 'B'},
                   'col2': {0: 'a', 1: 'c', 2: 'd', 3: 'e', 4: 'a'},
                    'col3': {0: 3, 1: 2, 2: 1, 3: 4, 4: 5}})
# set and sort index
df.set_index(['col1', 'col2']).sort_index(level=['col1', 'col2'])
输出

           col3
col1 col2      
A    a        3
     d        1
     e        4
B    a        5
     c        2

您可以将
groupby
与聚合函数一起使用:

df = df.groupby(['1', '2']).sum()

只需将
1
2
更改为列名即可。

这是为了让人讨厌,并且提供一个答案而不提及列名,因为没有给出任何列名

df.set_index(pd.MultiIndex.from_arrays(df.values[:, :2].T)).iloc[:, -1].sort_index()

A  a    3
   d    1
   e    4
B  a    5
   c    2
dtype: int64

也就是说,请选择@TEDPROU的答案