使用python将另一列的列和总和内容分组
发布时间:2020-12-16 22:56:30 所属栏目:Python 来源:网络整理
导读:我有一个数据框merged_df_energy: +------------------------+------------------------+------------------------+--------------+| ACT_TIME_AERATEUR_1_F1 | ACT_TIME_AERATEUR_1_F3 | ACT_TIME_AERATEUR_1_F5 | class_energy |+-----------------------
我有一个数据框merged_df_energy:
+------------------------+------------------------+------------------------+--------------+ | 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 | +------------------------+------------------------+------------------------+--------------+ 我想为每个ACT_TIME_AERATEUR_1_Fx(ACT_TIME_AERATEUR_1_F1,ACT_TIME_AERATEUR_1_F3和ACT_TIME_AERATEUR_1_F5)创建一个包含以下列的数据帧:class_energy和sum_time 例如,对应于ACT_TIME_AERATEUR_1_F1的数据框: +-----------------+-----------+ | class_energy | sum_time | +-----------------+-----------+ | low | 63.333333 | | medium | 0 | | high | 45.67 | +-----------------+-----------+ 我要做的事情我应该像这样使用组: data.groupby(by=['class_energy'])['sum_time'].sum() 有什么好主意帮我吗? 解决方法
您可以将所有列添加到[]以进行聚合:
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 你也可以使用参数as_index = False: print (df.groupby(by=['class_energy'],as_index=False)['ACT_TIME_AERATEUR_1_F1','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 如果只需要汇总前3列: 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 …或没有最后的所有列: 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |