2016-07-14 59 views
1

我试图使用熊猫来聚合列数据,以便根据数据集中的变量(例如广告尺寸,广告类别广告位置等)计算我的数据集中的广告的CPC。 因此,在下面的情况下我正在按adSize(这是1-5的分类变量)汇总adCost和adClicks分组。 如何在数据集中生成一个新列,该列将采用每个adSize的现在汇总的adCost和每个adSize的adClick并计算每个adSize的每次点击的成本? 我将聚合保存到一个变量中,但它并未将其保存到DataFrame或稍后可以进一步处理的对象中。我错过了什么或做错了什么?如何汇总这些数据,并用python&pandas创建一个新列?

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) 

感谢您的帮助

回答

2

你应该能够简单地使用groupby。我没有你的数据,我不完全确定我理解你的问题,但类似以下内容应该可以工作:

这就是你要求的吗?

+0

我相信你的功能解决了我试图实现的目标。我的困境是,好像在DataFrame上使用聚合函数时,即使将结果保存到变量中,也不会保存或保留结果。这样我就不能再操纵由聚合函数创建的数据,而仅仅打印输出。我想进一步操纵聚合函数的结果,例如将一个除以另一个。我认为你的解决方案很好,但更简单。我想知道这两种方法的目的或区别是什么。 – OAK

相关问题