【问题标题】:aggregate and join on the same table in the same operation - python在同一操作中聚合并加入同一张表 - python
【发布时间】:2021-10-19 02:46:30
【问题描述】:

在 R 中,您可以轻松地在一行中聚合和连接同一个 data.table。我想知道是否有 Python 中的等价物可以使用,而无需单独在表上聚合然后合并它。

这是 R 的等价物:

> require(data.table)
> DT = data.table(Col1 = c('A','A','A','B','B','B'), Col2 = c(1,2,3,4,5,6))
> DT[, Col2_mean := mean(Col2), by=.(Col1)]  # this is the line I'm hoping to produce in Python, in one line!
> DT
   Col1 Col2 Col2_mean
1:    A    1         2
2:    A    2         2
3:    A    3         2
4:    B    4         5
5:    B    5         5
6:    B    6         5

另外,是否可以同时执行多个聚合操作(例如 max())并合并它?

对于 Python,这是开始的数据框:

import pandas as pd
DF = pd.DataFrame(data={'Col1': ['A', 'A', 'A', 'B', 'B', 'B'], 'Col2': [1,2,3,4,5,6]})

【问题讨论】:

    标签: python r merge aggregate


    【解决方案1】:

    您可以使用带有groupbytransform 的熊猫来做到这一点:

    >>> df = pd.DataFrame({'Col1': ['A', 'A', 'A', 'B', 'B', 'B'], 'Col2': [1, 2, 3, 4, 5, 6]})
    >>> df['Col2_mean'] = df.groupby('Col1')['Col2'].transform('mean')
    >>> df
      Col1  Col2  Col2_mean
    0    A     1          2
    1    A     2          2
    2    A     3          2
    3    B     4          5
    4    B     5          5
    5    B     6          5
    >>> 
    

    【讨论】:

    • 感谢一百万。有没有办法在变换中进行多次聚合?我有 30 种不同的聚合需要按相同的分组执行。是否可以在 pandas 中同时创建多个列?
    猜你喜欢
    • 2017-08-22
    • 1970-01-01
    • 2016-11-24
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多