python - 从列中获取低值、高值和平均值

标签 python pandas

我正在尝试从列中获取低值、高值和平均值。但是,我只想按列值进行聚合。例如,如果我们有 2 行具有相同的列值,那么我们将这两行聚合在一起。此外,它们必须属于同一运营商。像这样:

处理前:

carrier   class   price
SP        A       22
VZ        C       33
XM        A       50 
XM        D       20     
SP        A       88
VZ        C       100

处理后:

carrier   class   price   low   high   mean
SP        A       22      22    88     55
VZ        C       33      33    100    66.5
XM        A       50      50    50     50
XM        D       20      20    20     20
SP        A       88      22    88     55
VZ        C       100     33    100    66.5

如您所见,如果我们有相同的运营商和相同的类别,那么我们就会聚合并获得低、高和平均值。如果我们有相同的运营商,但没有相同的类别,那么我们不会聚合,但我们仍然会得到与类别价格相同的低、高、均值。

我希望结果与处理后的结果完全一样。结果应该是一个数据框。我怎样才能做到这一点?

最佳答案

使用DataFrameGroupBy.agg带有元组列表 foe 具有聚合函数和 join 的新列名称到原始 DataFrame:

d = [('low','min'),('high','max'),('mean','mean')]
df1 = df.join(df.groupby(['carrier','class'])['price'].agg(d), on=['carrier','class'])
print (df1)
  carrier class  price  low  high  mean
0      SP     A     22   22    88  55.0
1      VZ     C     33   33   100  66.5
2      XM     A     50   50    50  50.0
3      XM     D     20   20    20  20.0
4      SP     A     88   22    88  55.0
5      VZ     C    100   33   100  66.5

详细信息:

print (df.groupby(['carrier','class'])['price'].agg(d))
               low  high  mean
carrier class                 
SP      A       22    88  55.0
VZ      C       33   100  66.5
XM      A       50    50  50.0
        D       20    20  20.0

或者使用transform , 有趣的解决方案:

d = [('low','min'),('high','max'),('mean','mean')]
g = df.groupby(['carrier','class'])['price']
for i, j in d:
    df[i] = g.transform(j)
print (df)
  carrier class  price  low  high  mean
0      SP     A     22   22    88  55.0
1      VZ     C     33   33   100  66.5
2      XM     A     50   50    50  50.0
3      XM     D     20   20    20  20.0
4      SP     A     88   22    88  55.0
5      VZ     C    100   33   100  66.5

关于python - 从列中获取低值、高值和平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53048513/

相关文章:

python - 权限错误 : [Errno 13] Permission denied: 'pro.csv'

python - 如何在屏幕上绘制不获取焦点并始终位于顶部的通知(Windows)

python - 缺少 key 的 Pandas groupby

python - Pandas 在 groupby 之后获取行

python - 当索引列包含重复项时,DataFrame 列中的 Pandas 系列

python - Python 上的 REST GET 请求发送命名参数

python - 忽略使用 file.readline(size) 后读取的其余行

python - 每个日期的聚合数据帧值

python - 从 Pandas 中的括号中提取

python - 如何对 Pandas 中的分类列执行 groupby 和 Mean