为了账号安全,请及时绑定邮箱和手机立即绑定

如果列中存在任何数字,则将总值指定为 1,否则指定为 0

如果列中存在任何数字,则将总值指定为 1,否则指定为 0

心有法竹 2023-12-08 17:12:26
我有一个与下面的示例类似的数据集:| id | old_a | old_b | new_a | new_b ||----|-------|-------|-------|-------|| 6  | 3     | 0     | 0     | 0     || 6  | 9     | 0     | 2     | 0     || 13 | 3     | 0     | 0     | 0     || 13 | 37    | 0     | 0     | 1     || 13 | 30    | 0     | 0     | 6     || 13 | 12    | 2     | 0     | 0     || 6  | 7     | 0     | 2     | 0     || 6  | 8     | 0     | 0     | 0     || 6  | 19    | 0     | 3     | 0     || 6  | 54    | 0     | 0     | 0     || 87 | 6     | 0     | 2     | 0     || 87 | 11    | 1     | 1     | 0     || 87 | 25    | 0     | 1     | 0     || 87 | 10    | 0     | 0     | 0     || 9  | 8     | 1     | 0     | 0     || 9  | 19    | 0     | 2     | 0     || 9  | 1     | 0     | 0     | 0     || 9  | 34    | 0     | 7     | 0     |我为上表提供了这个示例数据集:data=[[6,3,0,0,0],[6,9,0,2,0],[13,3,0,0,0],[13,37,0,0,1],[13,30,0,0,6],[13,12,2,0,0],[6,7,0,2,0],                                 [6,8,0,0,0],[6,19,0,3,0],[6,54,0,0,0],[87,6,0,2,0],[87,11,1,1,0],[87,25,0,1,0],[87,10,0,0,0],                                [9,8,1,0,0],[9,19,0,2,0],[9,1,0,0,0],[9,34,0,7,0]]data= pd.DataFrame(data,columns=['id','old_a','old_b','new_a','new_b'])我想查看每个 id 的“new_a”和“new_b”列,即使每个 id 的这两列中存在单个值,我也想将其计为 1,而不管任何值出现的次数并分配如果不存在任何值,则为 0。例如,如果我查看 id '9',new_a 中有两个不同的值,但我想将其计为 1。同样,对于 id '13',new_a 中没有值,所以我想指定为 0。我的最终输出应该是这样的:| id | new_a | new_b ||----|-------|-------|| 6  | 1     | 0     || 9  | 1     | 0     || 13 | 0     | 1     || 87 | 1     | 0     |我最终想计算使用 new_a 和 new_b 的客户端百分比。所以从上表来看,75%的客户端使用new_a,25%的客户端使用new_b。我是 python 的初学者,不知道如何继续。
查看完整描述

1 回答

?
ITMISS

TA贡献1871条经验 获得超8个赞

使用GroupBy.any, 因为0像 s 一样进行处理False并将输出布尔值转换为整数:

df = data.groupby('id')[['new_a','new_b']].any().astype(int).reset_index()

print (df)

   id  new_a  new_b

0   6      1      0

1   9      1      0

2  13      0      1

3  87      1      0

mean对于上述输出的使用百分比:


s = df[['new_a','new_b']].mean().mul(100)

print (s)

new_a    75.0

new_b    25.0

dtype: float64


查看完整回答
反对 回复 2023-12-08
  • 1 回答
  • 0 关注
  • 92 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信