我正在尝试使用 Pandas 生成报告,按一组字段分组:
这就是我正在做的事情:
#!/usr/bin/env python3
import pandas as pd
data = [
{
'id': 1,
'name': 'name1',
'pretty_name': 'Pretty Name 1',
'server_name': 'exampleserver.local',
'provider': 'provider1',
'type': 'A',
'status': 'KO'
},
{
'id': 2,
'name': 'name2',
'pretty_name': 'Pretty Name 2',
'server_name': 'exampleserver1.local',
'provider': 'provider2',
'type': 'B',
'status': 'OK'
},
{
'id': 1,
'name': 'name1',
'pretty_name': 'Pretty Name 1',
'server_name': 'exampleserver.local',
'provider': 'provider1',
'type': 'A',
'status': 'KO'
},
{
'id': 1,
'name': 'name1',
'pretty_name': 'Pretty Name 1',
'server_name': 'exampleserver.local',
'provider': 'provider1',
'type': 'A',
'status': 'OK'
},
{
'id': 2,
'name': 'name2',
'pretty_name': 'Pretty Name 2',
'server_name': 'exampleserver.local',
'provider': 'provider2',
'type': 'A',
'status': 'OK'
}
]
df = pd.DataFrame(data)
grouped = df.groupby(['server_name', 'provider', 'type', 'status'])['id'].count()
print(grouped.to_string())
返回:
server_name provider type status
exampleserver.local provider1 A KO 2
OK 1
provider2 A OK 1
exampleserver1.local provider2 B OK 1
这没关系,但我想在结果中添加一行,其中包含每个提供者的总数。IE
server_name provider tot type status
exampleserver.local provider1 3 A KO 2
OK 1
provider2 1 A OK 1
exampleserver1.local provider2 1 B OK 1
我很确定用 Pandas 可以很容易地做到这一点,但是我花了几个小时阅读文档却没有运气。
任何指针?
谢谢。
编辑:我已经更正并扩展了这个例子,因为它并没有真正的意义。