python - 如何在熊猫中将列中值的出现百分比获取到新列中
问题描述
我有一个看起来像这样的数据框:
import pandas as pd
foo = pd.DataFrame({'id':[1,1,2,2], 'val':[1,1,1,0]})
我想创建一个新列,其百分比val == 1
为id
生成的数据框应如下所示:
foo = pd.DataFrame({'id':[1,1,2,2], 'val':[1,1,1,0], 'percentage':[1,1,0.5,0.5})
任何想法我该怎么做?
解决方案
如果只有0,1
值可以mean
用于GroupBy.transform
新列:
foo['percentage'] = foo.groupby('id')['val'].transform('mean')
print (foo)
id val percentage
0 1 1 1.0
1 1 1 1.0
2 2 1 0.5
3 2 0 0.5
如果需要 in 中的任何值,val
请首先比较Series.eq
:
foo['percentage'] = foo['val'].eq(1).groupby(foo['id']).transform('mean')
推荐阅读
- android - apk mod如何欺骗PackageManager?
- reactjs - React 中未定义的 setState
- c# - C#登录XML循环错误密码
- node.js - 无法通过带有令牌的标头来重定向NodeJS
- python - 结合重复的用户输入来控制while循环
- docker - 为什么不创建多个容器而不是使用 kubernetes
- c++ - 当我的 if 语句在字符串中找到空格时切换到无限循环
- python - 使用自制软件安装 python 后如何更改 pip3 路径?
- sql - 是什么导致我的 SQL Select 语句有重复的结果?
- applescript - 用于将数据导入 AccountEdge Pro 的 Applescript 已停止工作