多指标与求和

2024-05-23 19:22:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我对编程还很陌生,而且我正在快速学习,我已经尝试了一天了,但是运气不好。我有一个相当大的数据集,它现在显示如下:

服务器1策略1 full2 1086
服务器1策略1差异2 100.5
服务器3策略5 full3 500
服务器1策略3应用程序10
服务器2策略2 full1 75
服务器2策略2差异1 62

我需要它像这样显示
|客户端|策略名称|计划名称|卷

|服务器1 |策略1 |完整2 | 1086
|政策1 |差异2 | 100.5
|政策3 |应用程序| 10
|总计1196.5

|服务器2策略2 |完整2 | 75
|政策2 |差异1 | 65
|总计| 137

我尝试了很多不同的方法,分组似乎不起作用,它抛出了一堆错误。除“体积”字段外的所有值都有一个指定给它的对象值。volume字段定义为float64。 就像我说的,我在这方面还很新,所以如果我不是100%理解概念的话,请容忍我


Tags: 数据服务器名称应用程序客户端编程政策差异
1条回答
网友
1楼 · 发布于 2024-05-23 19:22:56

此代码将按客户端计算总数

import pandas as pd

# |Client |policy name |schedule name |volume 
# server 1 policy 1 full2 1086
# server 1 policy 1 diff2 100.5
# server 3 policy 5 full3 500
# server 1 policy 3 app 10
# server 2 policy 2 full1 75
# server 2 policy 2 diff1 62

df = pd.DataFrame({'Client': ['server 1', 'server 1', 'server 3', 'server 1', 'server 2', 'server 2'],
                   'policy name': ['policy 1', 'policy 1', 'policy 5', 'policy 3', 'policy 2', 'policy 2'],
                   'schedule name': ['full2', 'diff2', 'full3', 'app', 'full1', 'diff1'],
                   'volume': [1086, 100.5, 500, 10, 75, 62]})

def print_with_and_total(df):
    print(df.groupby(['Client', 'policy name', 'schedule name']).sum())
    print('Total: {}'.format(df['volume'].sum()))

for x in df.groupby('Client'):
    print_with_and_total(x[1]) 

#                                     volume
# Client   policy name schedule name        
# server 1 policy 1    diff2           100.5
#                      full2          1086.0
#          policy 3    app              10.0
# Total: 1196.5
#                                     volume
# Client   policy name schedule name        
# server 2 policy 2    diff1            62.0
#                      full1            75.0
# Total: 137.0
#                                     volume
# Client   policy name schedule name        
# server 3 policy 5    full3           500.0
# Total: 500.0

相关问题 更多 >