Мульти и индекс и сумма панда - PullRequest
0 голосов
/ 24 мая 2018

Я довольно новичок в программировании, и я учусь на лету, я пытался сделать это около дня безуспешно.У меня довольно большой набор данных, в настоящее время он выглядит так:

политика сервера 1 1 полный2 1086политика 1 сервера 1 diff2 100,5политика сервера 3 full3 500политика сервера 1 приложение 3политика сервера 2 full1 75политика сервера 2 diff1 62

Мне нужно, чтобы это отображалось вот так| Клиент | Имя политики | Имя расписания | Объем

| сервер 1 | политика 1 | полный2 | 1086| политика 1 | diff2 | 100,5| политика 3 | приложение | 10| всего | 1196,5

| политика сервера 2 2 | full2 | 75| политика 2 | diff1 | 65| всего | 137

Я пробовал несколько разных способов, группировка, похоже, не работает, она выдает кучу ошибок.Значения для всего, кроме поля тома, имеют присвоенное ему значение объекта.Поле громкости определяется как float64.Как я уже говорил, я довольно новичок в этом, поэтому, пожалуйста, потерпите меня, если я не на 100% понимаю концепции.

1 Ответ

0 голосов
/ 25 мая 2018

Этот код будет рассчитывать итоги по клиенту

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...