python里面groupby一个字段之后,让计算每一个组里面的元素等于1的数量比上每一个组里面的元素等于0的数量代码怎么写
时间: 2024-05-07 20:16:46 浏览: 119
好的,您的问题是关于Python中groupby方法的使用,计算每个组中等于1的元素占比与等于0的元素占比,是吗?可以使用以下代码实现:
```python
from itertools import groupby
data = [{'group': 'A', 'value': 1}, {'group': 'A', 'value': 0},
{'group': 'B', 'value': 0}, {'group': 'B', 'value': 1},
{'group': 'B', 'value': 1}, {'group': 'C', 'value': 1}]
# 使用groupby方法,按照group字段进行分组
groups = groupby(data, key=lambda x: x['group'])
# 遍历分组后的结果,计算每个组中等于1的元素占比与等于0的元素占比
for key, group in groups:
ones = 0
zeros = 0
for item in group:
if item['value'] == 1:
ones += 1
elif item['value'] == 0:
zeros += 1
if zeros > 0:
ratio = ones / zeros
else:
ratio = float('inf')
print("Group {}: ones={}, zeros={}, ratio={}".format(key, ones, zeros, ratio))
```
以上代码假设数据为字典列表,其中包含group和value两个字段,group表示分组依据,value表示待统计数值。运行结果输出每个组的等于1的元素数量、等于0的元素数量,以及两者的比值。如果一个组中全部元素都等于0,那么比值为正无穷。
阅读全文