pandas groupby索引值

时间:2016-04-29 22:27:26

标签: python pandas

是否可以通过索引标签(而不是列标签)进行分组?这似乎应该是微不足道的,所以也许我错过了一些东西。

import pandas as pd
import numpy as np
df = pd.DataFrame([['a', 'b', 'c'], 
                   ['a', 'a', 'b'], 
                   ['b', 'b', 'c']],
                  index=['q', 'r', 's'], 
                  columns=['x', 'y', 'z'])
df
    x   y   z
q   a   b   c
r   a   a   b
s   b   b   c

这正如我所料:

df.groupby('x', axis=0).agg(sum)

    y   z
x       
a   ba  cb
b   b   c

然而这失败了

df.groupby('s', axis=1).agg(sum)

KeyError

我希望得到的是:

s   b   c
q   ab  c
r   aa  b

是否可以将索引值分组?我意识到我可以转换表,但是我需要执行多个groupbys,如果我可以避免这种情况,那么它将更不容易出错。此外,如果axis参数未指定应用groupby的轴,它会做什么?

1 个答案:

答案 0 :(得分:1)

我认为r中的df.groupby('r', axis=1).agg(sum)应为s。也许这是你的错?

反正

您可以根据下面的索引值进行分组。 (我的解决方法......)

print df[~df.index.isin(['s'])].groupby(df.loc['s'], axis=1).agg(sum)

s   b  c
q  ab  c
r  aa  b