我有:
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,并使用行索引0
和1
进行分组。 (不使用Transpose)
答案 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