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

时间:2016-07-14 16:53:01

标签: python pandas aggregation

我正在尝试使用pandas汇总列数据,以便根据数据集中的变量(例如广告尺寸,广告类别广告展示位置等)计算数据集中广告的每次点击费用。 因此,在下面的情况下,我将通过adSize(这是1-5的分类变量)聚合adCost和adClicks分组。 如何在数据集中生成一个新列,该列将采用每个adSize现在聚合的adCost和每个adSize的adClick,并计算每个adSize的每次点击费用? 我将聚合保存到变量中,但它没有将其保存到DataFrame或我以后可以进一步操作的对象中。我错过了什么或做错了什么?

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)

感谢您的协助

1 个答案:

答案 0 :(得分:2)

您应该可以简单地使用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')

这是你要问的吗?