python - 基于多行值改变行值的有效方法
问题描述
我有一个如下的数据框,
year state candidate candidatevotes
0 1976 Alabama Carter, Jimmy 659170
1 1976 Alabama Ford, Gerald 504070
7 1976 Alaska Ford, Gerald 71555
8 1976 Alaska Carter, Jimmy 44058
11 1976 Arizona Ford, Gerald 418642
在这里,我需要根据每个州的获胜者添加一个二进制列。例如,阿拉巴马州的获胜者是卡特、吉米。因此输出应该是这样的。
year state candidate candidatevotes winner
0 1976 Alabama Carter, Jimmy 659170 1
1 1976 Alabama Ford, Gerald 504070 0
7 1976 Alaska Ford, Gerald 71555 1
8 1976 Alaska Carter, Jimmy 44058 0
11 1976 Arizona Ford, Gerald 418642 1
上述操作最有效的方法是什么?
解决方案
我们通常这样做transform
,您可以astype(int)
在最后添加 conver the bool to int
s=df.groupby(['year','state']).candidatevotes.transform('max')
df['winner']=df.candidatevotes==s
df
Out[40]:
year state candidate candidatevotes winner
0 1976 Alabama Carter,Jimmy 659170 True
1 1976 Alabama Ford,Gerald 504070 False
7 1976 Alaska Ford,Gerald 71555 True
8 1976 Alaska Carter,Jimmy 44058 False
11 1976 Arizona Ford,Gerald 418642 True
推荐阅读
- python - 编写一个 Python 程序来打印以下数字序列(N 由用户输入):X + X^2/2!+ X^3/3!+... 最多第 N 个学期
- sql-server - 使用 VNET 部署 Azure 数据库部署管道
- python - 如何避免python无关进程之间的忙等待
- anylogic - 如何避免移动代理通过另一个代理而不是避免它?
- python - 使用 struct.pack 在 Python 中打包/解包一个 3 字节整数
- javascript - 单击按钮后显示连续数字的问题
- c# - SignTool 错误:未找到满足所有给定条件的证书。- 如何建造
- python - How to draw on a Fourier transform numpy array Opencv
- python - 从 csv 文件读取变量时 Subprocess.Popen() 不起作用
- javascript - 在 React 中创建标题