pandas - Group by of a Column and Sum Contents of another column with python -
i have dataframe merged_df_energy:
merged_df_energy.head() act_time_aerateur_1_f1 act_time_aerateur_1_f3 act_time_aerateur_1_f5 class_energy 63.333333 63.333333 63.333333 low 0 0 0 high 45.67 0 55.94 high 0 0 23.99 low 0 20 23.99 medium
i create each act_time_aerateur_1_fx
(act_time_aerateur_1_f1
, act_time_aerateur_1_f3
, act_time_aerateur_1_f5
) dataframe wich contains these columns : class_energy
, sum_time
for example dataframe corresponding act_time_aerateur_1_f1
:
class_energy sum_time low 63.333333 medium 0 high 45.67
i thing should use group this:
data.groupby(by=['class_energy'])['sum_time'].sum()
any idea me please?
you can add columns []
aggregating:
print (df.groupby(by=['class_energy'])['act_time_aerateur_1_f1', 'act_time_aerateur_1_f3','act_time_aerateur_1_f5'].sum()) act_time_aerateur_1_f1 act_time_aerateur_1_f3 \ class_energy high 45.670000 0.000000 low 63.333333 63.333333 medium 0.000000 20.000000 act_time_aerateur_1_f5 class_energy high 55.940000 low 87.323333 medium 23.990000
you can use parameter as_index=false
:
print (df.groupby(by=['class_energy'], as_index=false)['act_time_aerateur_1_f1', 'act_time_aerateur_1_f3','act_time_aerateur_1_f5'].sum()) class_energy act_time_aerateur_1_f1 act_time_aerateur_1_f3 \ 0 high 45.670000 0.000000 1 low 63.333333 63.333333 2 medium 0.000000 20.000000 act_time_aerateur_1_f5 0 55.940000 1 87.323333 2 23.990000
if need aggregate first 3
columns:
print (df.groupby(by=['class_energy'], as_index=false)[df.columns[:3]].sum()) class_energy act_time_aerateur_1_f1 act_time_aerateur_1_f3 \ 0 high 45.670000 0.000000 1 low 63.333333 63.333333 2 medium 0.000000 20.000000 act_time_aerateur_1_f5 0 55.940000 1 87.323333 2 23.990000
...or columns without last:
print (df.groupby(by=['class_energy'], as_index=false)[df.columns[:-1]].sum()) class_energy act_time_aerateur_1_f1 act_time_aerateur_1_f3 \ 0 high 45.670000 0.000000 1 low 63.333333 63.333333 2 medium 0.000000 20.000000 act_time_aerateur_1_f5 0 55.940000 1 87.323333 2 23.990000
Comments
Post a Comment