首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何根据熊猫中多列的条件替换列中的值

如何根据熊猫中多列的条件替换列中的值
EN

Stack Overflow用户
提问于 2021-02-20 09:48:03
回答 2查看 376关注 0票数 0

我想替换列“风险评级”中的值,当且仅当三个条件满足了来自数据数据的三列的条件。我使用了掩码技术,也用了.loc方法,但是它对我没有用。我只想做9行。我想把这个单数的“风险评级”值从0替换到9。数据帧的长度为180002。下面是我写的代码:

代码语言:javascript
运行
复制
safety.loc[((safety['Employee Name']=="Shabbir Hussain") & (safety['Employee Number']==11231) & 
(safety['Attendance Date']=="2020-03-12")),['Risk Rating']]=9

mask = (safety['Employee Name']=="Shakir Hussain") & (safety['Employee Number']==11026) & 
(safety['Attendance Date']=="2020-03-12") & (safety['Risk Rating']==0)
safety['Risk Rating'][mask]=9
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-20 10:29:04

代码语言:javascript
运行
复制
mask = (safety['Employee Name']=="Shakir Hussain") & 
       (safety['Employee Number']==11026) & 
       (safety['Attendance Date']=="2020-03-12") & 
       (safety['Risk Rating']==0)

如果要有条件地赋值,则需要使用.loc来定位特定的索引,然后可以分配值。

代码语言:javascript
运行
复制
safety.loc[mask, 'Risk Rating']=9

或者您也可以使用numpy选择来应用掩蔽。

代码语言:javascript
运行
复制
safety['Risk Rating'] = np.select([mask], [9], default=safety['Risk Rating'])
票数 0
EN

Stack Overflow用户

发布于 2021-02-20 11:01:26

改进@Bikhyat Adhiakri回答,考虑到您将处理数千行,请使用numpy:

代码语言:javascript
运行
复制
import numpy as np

arr = safety.to_numpy()

# replace 0, 1, 2 with the row numbers
mask = (arr[:,0] == "Shakir Hussain") * (arr[:,1] == 11026) * (df_np[:,2] == "2020-03-12")

arr[mask,4] = 9 # but your data will be in numpy format

# or you can use
# safety.loc[mask, 'Risk Rating'] = 9

对于大行号,numpy可能使处理速度提高1000倍。

请参阅:https://stackoverflow.com/a/64504183/11671779

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66290127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档