pandas groupby在列上

时间:2016-05-16 05:55:54

标签: python pandas grouping

我正在尝试以下示例,我需要对列进行分组

import pandas as pd
import numpy as np

y = pd.DataFrame(np.random.randint(0,10, (20,30)).astype(float),
                columns = pd.MultiIndex.from_tuples(
                    list(zip(np.arange(30), 
                             np.random.randint(0,10, (30,))))
                ))
y.T.groupby(level = 1).agg(lambda x: np.std(x)/np.mean(x))

它有效。但是后面会返回错误:

y.groupby(level = 1, axis = 1).agg(lambda x: np.std(x)/np.mean(x))

我错过了什么吗?

更新:以下单独拍摄时起作用:

y.groupby(level = 1, axis = 1).agg(np.std)/\
   y.groupby(level = 1, axis = 1).agg(np.mean)

1 个答案:

答案 0 :(得分:0)

groupby函数按列方式应用于数据框,但是,当数据框转置时,行会成为列,反之亦然。

如果您的行和列都不是多索引,那么这不会成为一个问题。但是,由于您通过level=1属性将行索引视为多索引,因此您会收到该错误。

此外,如果您尝试按行分组,则应该axis=0

y.groupby(y.index, axis = 0).agg(lambda x: np.std(x)/np.mean(x))