按列分组的每行的Python平均值
我有一列a和一列B。在列结果中,我想计算按列a分组的列B的平均值(这意味着我想计算我在列结果中写入的内容) 在我的数据集中,我有大约20万行数据,因此函数应该非常强大。这应该可以工作:按列分组的每行的Python平均值,python,group-by,mean,Python,Group By,Mean,我有一列a和一列B。在列结果中,我想计算按列a分组的列B的平均值(这意味着我想计算我在列结果中写入的内容) 在我的数据集中,我有大约20万行数据,因此函数应该非常强大。这应该可以工作: import pandas as pd import numpy as np cor = pd.DataFrame({'A' : [100, 100, 100, 200, 200, 300, 300, 300, 300], 'B' : [10, np.NaN, 20, np
import pandas as pd
import numpy as np
cor = pd.DataFrame({'A' : [100, 100, 100, 200, 200, 300, 300, 300, 300],
'B' : [10, np.NaN, 20, np.NaN, 50, 10, 40, 60, 80]})
print(cor)
values = cor.groupby('A').mean().reset_index()
print(values)
df = cor.merge(values,how='left',left_on=['A'],right_on=['A'])
df = df.rename(columns={"B_x":"B","B_y":"Result"})
print(df)
输出:
A B Result
0 100 10.0 15.0
1 100 NaN 15.0
2 100 20.0 15.0
3 200 NaN 50.0
4 200 50.0 50.0
5 300 10.0 47.5
6 300 40.0 47.5
7 300 60.0 47.5
8 300 80.0 47.5
cor['Result']=cor.groupby('A')['B'].transform('mean')
A B Result
0 100 10.0 15.0
1 100 NaN 15.0
2 100 20.0 15.0
3 200 NaN 50.0
4 200 50.0 50.0
5 300 10.0 47.5
6 300 40.0 47.5
7 300 60.0 47.5
8 300 80.0 47.5