我正在尝试使用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
这没关系,但我想在结果中添加一行,其中包含每个提供者的总数。即
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
我很确定熊猫可以很容易地做到这一点,但我花了几个小时阅读文档,运气不好
有什么建议吗
谢谢
编辑:我已经纠正并扩展了这个例子,因为它没有真正意义
如果将} 和^{} 匹配,则可以创建用于比较的帮助器列,并将其转换为整数,因此可以使用
provider1
与^{sum
来计算匹配的值:编辑:
您可以为
DataFrame
和rename
列添加as_index=False
:然后,如果希望新列位于} 和^{} :
2
位置,请使用^{最后,如果需要} :
Multiindex
使用^{相关问题 更多 >
编程相关推荐