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