假设我有一个包含3列的数据框:C1,C2和Value。我的C1和C2列都包含从0到3的值。
| C1 | C2 | Value |
|----|----|-------|
| 1 | 3 | 45 |
| 2 | 1 | -50 |
| 3 | 1 | 200 |
| 1 | 2 | -10 |
| 3 | 1 | 18 |
| 2 | 3 | 2 |
| 1 | 3 | 25 |
我想获取给定索引元组(x,y)的'value'列中值的平均值,其中C1中的x和C2中的y。但是,我想将元组(x,y)和(y,x)视为相同,即。没有考虑订购。我将尝试通过一个例子来阐明我的问题:假设C1 = 1且C1 = 3,在这种情况下,我想取平均值45、200、18和25。均以索引排序的数据框或序列。在上面的示例中,平均值为72。我想在结果中输入条目(1,3)和(3,1)的值都为72。(目标是能够绘制条形图的手段。)
我希望我的描述足够清楚。
我已经使用panda groupby运算符来找到方法,但是找不到如何处理订购问题。
这是我用于计算均值的代码:
python results = df.groupby(['C1','C2'])['value'].mean()
我必须对两个排序都取平均值,然后将结果保存回两个元组排序,但是我找不到合适的方法来做到这一点。谢谢你的帮助 !
IIUC,您可以使用np.sort()
overaxis=1
和groupby对df进行排序:
m=pd.DataFrame(np.sort(df[['C1','C2']],axis=1),columns=['C1','C2']).join(df[['Value']])
m.groupby(['C1','C2']).Value.mean()
C1 C2
1 2 -30
3 72
2 3 2
Name: Value, dtype: int64
print(m)
C1 C2 Value
0 1 3 45
1 1 2 -50
2 1 3 200
3 1 2 -10
4 1 3 18
5 2 3 2
6 1 3 25
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句