如何使用python&;聚合这些数据并创建一个新列;熊猫?

如何使用python&;聚合这些数据并创建一个新列;熊猫?,python,pandas,aggregation,Python,Pandas,Aggregation,我试图使用pandas来聚合列数据,以便根据数据集中的变量(如广告大小、广告类别、广告位置等)计算数据集中广告的CPC。 因此,在下面的例子中,我通过adSize(一个1-5的分类变量)聚合adCost和adClicks分组。 我如何在数据集中生成一个新列,该列将获取当前聚合的每adSize的adCost和每adSize的adClick,并计算每adSize的每点击成本? 我将聚合保存到一个变量中,但它并没有将其保存到一个数据帧或一个我以后可以进一步操作的对象中。我错过了什么或做错了什么 imp

我试图使用pandas来聚合列数据,以便根据数据集中的变量(如广告大小、广告类别、广告位置等)计算数据集中广告的CPC。 因此,在下面的例子中,我通过adSize(一个1-5的分类变量)聚合adCost和adClicks分组。 我如何在数据集中生成一个新列,该列将获取当前聚合的每adSize的adCost和每adSize的adClick,并计算每adSize的每点击成本? 我将聚合保存到一个变量中,但它并没有将其保存到一个数据帧或一个我以后可以进一步操作的对象中。我错过了什么或做错了什么

import pandas as pd
import numpy as np

df = pd.DataFrame(data)

from sklearn import preprocessing
label_encoder = preprocessing.LabelEncoder()

## Convert 'adSize' to categorial values
df['adSize'] = df['adSize']
df['adSize'] = label_encoder.fit_transform(df['adSize'])

agg_calc = {
    'adCost':{
     # work on the "calculation" column
        'total_cost': 'sum', 
        'avg_cost': 'mean'  
    },
    'adClicks':{
        'total_clicks': 'sum',
        'avg_click': 'mean',
        'count': 'count'
    }
}

## Aggregate by adSize
y= df.groupby(['adSize']).aggregate(agg_calc)

感谢您的帮助

您应该能够简单地使用
groupby
。我没有你的数据,我也不完全确定我是否理解你的问题,但类似以下的方法应该有效:

df['total_cost'] = df.groupby('adSize')['adCost'].transform('sum')
df['avg_cost'] = df.groupby('adSize')['adCost'].transform('mean')
df['total_clicks'] = df.groupby('adSize')['adClicks'].transform('sum')
df['avg_click'] = df.groupby('adSize')['adClicks'].transform('mean')
df['count'] = df.groupby('adSize')['adClicks'].transform('count')

这就是你要问的吗?

我相信你的函数解决了我想要实现的目标。我的困境是,似乎在数据帧上使用聚合函数时,即使将结果保存到变量中,结果也不会被保存或保留。这样,我以后就不能操作聚合函数创建的数据,而只能打印输出。我想进一步操纵聚合函数的结果,比如用一个除以另一个。我认为你的解决方案很好,而且更简单。我想知道这两种方法的目的或区别是什么。