如何沿轴= 1的DataFrame.groupby

时间:2017-12-24 20:53:54

标签: python pandas dataframe pandas-groupby

我有:

df = pd.DataFrame({'A':[1, 2, -3],'B':[1,2,6]})
df
    A   B
0   1   1
1   2   2
2   -3  6

问:我如何获得:

    A
0   1
1   2
2   1.5

使用groupby()aggregate()

类似的东西,

df.groupby([0,1], axis=1).aggregate('mean')

所以基本上是axis=1的groupby,并使用行索引01进行分组。 (不使用Transpose)

3 个答案:

答案 0 :(得分:3)

你在找?

df.mean(1)
Out[71]: 
0    1.0
1    2.0
2    1.5
dtype: float64

如果您确实需要groupby

df.groupby(['key']*df.shape[1],axis=1).mean()
Out[72]: 
   key
0  1.0
1  2.0
2  1.5

答案 1 :(得分:0)

分组密钥可以有4种形式,我只会提到与您的问题相关的第一个和第三个。以下内容来自"数据分析使用Pandas"

  

每个分组键可以采用多种形式,并且键不必是完全相同的类型:

     

•与要分组的轴长度相同的列表或数组值

     

•dict或Series,表示被分组的轴上的值与组名

之间的对应关系

因此,您可以传递与列轴,分组轴或类似下列字母相同长度的数组:

df1.groupby({x:'mean' for x in df1.columns}, axis=1).mean()

    mean
0   1.0
1   2.0
2   1.5

答案 2 :(得分:-1)

尝试一下:

df["A"] = np.mean(dff.loc[:,["A","B"]],axis=1)
df.drop(columns=["B"],inplace=True)
      A
 0   1.0
 1   2.0
 2   1.5