按列分组的每一行的Python平均值

时间:2019-09-16 20:51:21

标签: python group-by mean

我有A列和B列。在Result列中,我想计算按A列分组的B列的均值(这意味着我要计算写到Result列中的内容)。

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],
                   'Result': [15, 15, 15, 50, 50, 47.5, 47.5, 47.5, 47.5]})
print(cor)
values = cor.groupby('A').mean()

在我的数据集中,我有大约20万行数据,因此该功能应该非常强大。

1 个答案:

答案 0 :(得分:0)

这应该有效:

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