Python 熊猫,计算每组的值?

Python 熊猫,计算每组的值?,python,pandas,Python,Pandas,我正试图从df转到df2 我按照review\u meta\u id,age\u bin进行分组,然后从sum(点击计数)/sum(印象计数) 有没有一种优雅的方法可以做到以下几点 data = [] for name, group in grouped: ctr = group['click_count'].sum() / group['impression_count'].sum() review_meta_id, age_bin = name data.append

我正试图从
df
转到
df2

我按照
review\u meta\u id,age\u bin
进行分组,然后从
sum(点击计数)/sum(印象计数)

有没有一种优雅的方法可以做到以下几点

data = []
for name, group in grouped:
    ctr = group['click_count'].sum() / group['impression_count'].sum()
    review_meta_id, age_bin = name
    data.append(dict(review_meta_id=review_meta_id, ctr=ctr, age_bin=age_bin))


df2 = pd.DataFrame(data)

您可以首先通过
sum
聚合goth列,然后将列与for use分开并删除列,最后通过以下方式将
MultiIndex
转换为具有删除缺少值的行的列:

您可以使用函数将数据帧按
'review\u meta\u id',age\u bin'
进行分组,以计算
'ctr'
,结果将是一个熊猫系列,以便将其转换为数据帧。我们使用reset\u index()并提供
name='ctr'
,对应于系列值的列的名称

def divide_two_cols(df_sub):
    return df_sub['click_count'].sum() / float(df_sub['impression_count'].sum())

df2 = df.groupby(['review_meta_id', 'age_bin']).apply(divide_two_cols).reset_index(name='ctr')
new_df
df2 = df.groupby(['review_meta_id', 'age_bin'])[['click_count','impression_count']].sum()
df2['ctr'] = df2.pop('click_count') / df2.pop('impression_count')
df2 = df2.reset_index().dropna()
print (df2)
   review_meta_id age_bin       ctr
0               3       1  0.300000
1               3       2  0.285714
2               3       3  0.600000
4               4       2  0.555556
def divide_two_cols(df_sub):
    return df_sub['click_count'].sum() / float(df_sub['impression_count'].sum())

df2 = df.groupby(['review_meta_id', 'age_bin']).apply(divide_two_cols).reset_index(name='ctr')
new_df