pandas 根据条件直接替换某一列的值的两种方法 np.where pandas.DataFrame.mask

#########################################################
写在最前:
自己和朋友成立了一个工作室——图灵数据科学工作室(VX:DataUpward)
一是想和大家交个朋友
二是想帮助朋友们跳过我们遇到的坑,尽快找到解决办法。

======================================================
工作室的运行也需要付出各种成本,“活下去”是我们的当务之急,如果大家有 :

  • 数据分析(报告);
  • 商业数据调研;
  • 数据可视化展示;
  • 数据爬虫;
  • -数据模型开发;
  • 机器学习算法挖掘

  • 也欢迎和我们工作室开展合作~

一、问题描述

原始数据如下:

df[2]>0.6时,用df[1]的值替代df[0]的值。

二、解决方案

2.1 方法一:通过np.where替换

numpy.where(condition,x,y)

condition:类数组对象,布尔逻辑(即True或False),如果条件成立,则赋值x,否则赋值y

2.2 方法二:通过pandas.DataFrame.mask替换

DataFrame.mask(cond, x, y)

cond:类数组对象,布尔逻辑(即True或False),如果条件成立,则赋值x,否则赋值y

三、演示示例

3.1 方法一 示例

# 1. 当`df[2]>0.6`时,用`df[1]`的值替代`df[3]`的值,否则用df[0]的值保持。
%timeit df[3] = np.where(df[2]>0.6, df[1], df[0])
df

3.2 方法二 示例

# 2. 当`df[2]<0.4`时,用`df[1]`的值替代`df[4]`的值,否则用df[0]的值保持。
%timeit df[4] = df[0].mask(df[2]>0.6, df[1])
df

三、总结

  1. 可以看出numpy.where(condition,x,y)的时间复杂度会低于DataFrame.mask(cond, x, y)

  2. numpy.where()官方文档

  3. DataFrame.mask(cond, x, y)官方文档

全部评论

相关推荐

03-10 10:57
已编辑
门头沟学院 推荐算法
夜夜还好:我们学校说为了学生就业,更新了课程,我今天大二,上学期在学jsp,html,这学期上来工程实践,要求用springboot+vue,说什么这些技术要我们提前自己准备,要不你把学费还我吧,我给b站充个会员,人家教的比你多
点赞 评论 收藏
分享
03-06 20:09
贵州大学 Java
King987:你这个学历找个中大厂刷实习经历都是可以的,但是项目要有亮点才行,这个什么外卖就不要做了,去找找最新的项目,至少涉及高并发或者是新型的AI技术mcp rag啥的 ,我在出简历点评,但是你这个没什么好点评的,内容太少,而且含金量太低。自己改一改吧,或者看一下我的项目地址中,那里有大厂最近做过的实习项目
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务