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的答案