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

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

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

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

  • 也欢迎和我们工作室开展合作~
    pandas 根据条件直接替换某一列的值的两种方法 np.where pandas.DataFrame.mask_第1张图片

根据条件替换某一列的值

  • 一、问题描述
  • 二、解决方案
    • 2.1 方法一:通过`np.where`替换
    • 2.2 方法二:通过`pandas.DataFrame.mask`替换
  • 三、演示示例
    • 3.1 方法一 示例
    • 3.2 方法二 示例
  • 三、总结

一、问题描述

原始数据如下:
pandas 根据条件直接替换某一列的值的两种方法 np.where pandas.DataFrame.mask_第2张图片

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

pandas 根据条件直接替换某一列的值的两种方法 np.where pandas.DataFrame.mask_第3张图片

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

pandas 根据条件直接替换某一列的值的两种方法 np.where pandas.DataFrame.mask_第4张图片

三、总结

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

  2. numpy.where()官方文档

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

你可能感兴趣的:(Jupyterlab,Python学习,DataFrame.mask,np.where)