按列分组的每行的Python平均值[重复]
Posted
技术标签:
【中文标题】按列分组的每行的Python平均值[重复]【英文标题】:Python mean value for each row grouped by a column [duplicate] 【发布时间】:2020-01-17 17:28:28 【问题描述】:我有一个 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 万行数据,所以这个函数应该是相当强大的。
【问题讨论】:
cor['Result'] = cor.groupby('A')['B'].transform('mean')
【参考方案1】:
这应该可行:
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
【讨论】:
以上是关于按列分组的每行的Python平均值[重复]的主要内容,如果未能解决你的问题,请参考以下文章