Pandas中根据条件替换列中的值的四种方式
作者:Rick_M359 发布时间:2022-07-25 00:27:38
方法1:使用dataframe.loc[]函数
通过这个方法,我们可以用一个条件或一个布尔数组来访问一组行或列。如果我们可以访问它,我们也可以操作它的值,是的!这是我们的第一个方法,通过pandas中的dataframe.loc[]函数,我们可以访问一个列并通过一个条件改变它的值。
语法:df.loc[ df["column_name"] == "some_value", "column_name" ] = "value"
some_value = 需要被替换的值 value = 应该被放置的值。
示例: 我们要把性别栏中的所有 “男性 “改为1。
import pandas as pd
import numpy as np
# data
data= {
'Name': ['John', 'Jay', 'sachin', 'Geetha', 'Amutha', 'ganesh'],
'gender': ['male', 'male', 'male', 'female', 'female', 'male'],
'math score': [50, 100, 70, 80, 75, 40],
'test preparation': ['none', 'completed', 'none', 'completed',
'completed', 'none'],
}
# 创建一个 Dataframe 对象
df = pd.DataFrame(data)
# 条件应用
df.loc[df["gender"] == "male", "gender"] = 1
输出:
使用dataframe.loc[]函数
方法2:使用NumPy.where()函数
NumPy是一个非常流行的库,用于2D和3D数组的计算。它为我们提供了一个非常有用的方法where()来访问有条件的特定行或列。我们也可以用这个函数来改变某一列的特定值。 语法: df[“column_name”] = np.where(df[“column_name”]==”some_value”, value_if_true, value_if_false)
示例: 这个numpy.where()函数应该写上条件,如果条件为真,后面是值,如果条件为假,则是一个值。现在,我们要把性别栏中的所有 “女性 “改为0,”男性 “改为1。
import pandas as pd
import numpy as np
# data
data= {
'Name': ['John', 'Jay', 'sachin', 'Geetha', 'Amutha', 'ganesh'],
'gender': ['male', 'male', 'male', 'female', 'female', 'male'],
'math score': [50, 100, 70, 80, 75, 40],
'test preparation': ['none', 'completed', 'none', 'completed',
'completed', 'none'],
}
# 创建一个 Dataframe 对象
df = pd.DataFrame(data)
# 条件应用
df["gender"] = np.where(df["gender"] == "female", 0, 1)
输出:
使用NumPy.where()函数
方法3:使用pandas掩码函数
Pandas的掩蔽函数是为了用一个条件替换任何行或列的值。
语法: df[‘column_name’].mask( df[‘column_name’] == ‘some_value’, value , inplace=True )
示例:
使用这个屏蔽条件,将性别栏中所有的 “女性 “改为0。
import pandas as pd
import numpy as np
# data
data= {
'Name': ['John', 'Jay', 'sachin', 'Geetha', 'Amutha', 'ganesh'],
'gender': ['male', 'male', 'male', 'female', 'female', 'male'],
'math score': [50, 100, 70, 80, 75, 40],
'test preparation': ['none', 'completed', 'none', 'completed',
'completed', 'none'],
}
# 创建一个 Dataframe 对象
df = pd.DataFrame(data)
# 条件应用 1
df['gender'].mask(df['gender'] == 'female', 0, inplace=True)
# 条件应用 2
#df['math score'].mask(df['math score'] >=60 ,'good', inplace=True)
输出:
使用pandas掩码函数
方法4:替换包含指定字符的字符串
语法 : data["列名"].mask(data.列名.str.contains(".*?某字符串"), "替换目标字符串", inplace=True)
import pandas as pd
import numpy as np
# data
data= {
'Name': ['John', 'Jay', 'sachin', 'Geetha', 'Amutha', 'ganesh'],
'gender': ['male', 'male', 'male', 'female', 'female', 'male'],
'math score': [50, 100, '良70', 80, '良75', 40],
'test preparation': ['none', 'completed', 'none', 'completed',
'completed', 'none'],
}
# 创建一个 Dataframe 对象
df = pd.DataFrame(data)
# 条件应用
data["math score"].mask(data.math score.str.contains(".*?良"), "良好", inplace=True)
使用pandas掩码函数
来源:https://blog.csdn.net/Rick_M/article/details/128439156


猜你喜欢
- 一道Python课作业题,大致如下:编写一个类:该类Building应具有以下方法:●一个构造函数,它根本不接受任何参数(除了通常的`sel
- 1.可能是/usr/local/mysql/data/rekfan.pid文件没有写的权限解决方法 :给予权限,执行 “chown -R m
- JS操作二进制很麻烦,而且一直没有一个好的无损压缩工具来实现纯文本的压缩。所以钻研了一段时间的gzip,后来发现还是仅用 LZ77 比较容易
- 一、单字节SQL注入MYSQL的SQL注入已经由来已久,以下是普遍采用的注入步骤:1、在GET参数上加一个/*或者#(mysql专有的注释)
- JSP 获取spring容器中bean的方法总结方案1(Web中使用):ApplicationContext ct = WebApplica
- 这里的Go(SDK)、GoLand的安装就不多说了,网上自行下载,我们着重讲项目配置,import pkg时能够完美运行一、Go版本以及Go
- 简介MQTT.js 是一个开源的 MQTT 协议的客户端库,使用 JavaScript 编写,主要用于 Node.js
- 一.filter函数简介filter函数主要用来筛选数据,过滤掉不符合条件的元素,并返回一个迭代器对象,如果要转换为列表list或者元祖tu
- 目录连接池是什么?为什么需要连接池?连接池的原理是什么?使用python语言自制简易mysql连接池开始使用自定义配置文件名 & 配
- 前言python是一门优秀的编程语言,而是python成为数据分析软件的是因为python强大的扩展模块。也就是这些python的扩展包让p
- 目录前言简单介绍创建或连接数据库游标创建表插入查询查询总数查询所有查询第一条分页查询更新删除总结前言sqlite的官网 sqlite.org
- 概述在实践中,我们发现上述的代码重复率非常高,新增和修改都费力,并且是没技术含量的体力活。 但又必须要这样做,不适合以公共函数的形式重用,为
- MybatisPlus 是一款在 Mybatis 基础上进行的增强 orm 框架,可以实现不写 sql 就完成数据库相关的操作。普通的 ma
- 从物理意义上来讲,InnoDB表由共享表空间文件(ibdata1)、独占表空间文件(ibd)、表结构文件(.frm)、以及日志文件(redo
- 本文实例讲述了Python实现的重启关机程序的方法,对Python程序设计有一定的参考价值。具体方法如下:实例代码如下:#!/usr/bin
- 去除数字,特殊字符,只保留汉字import res = '1123*#$ 中abc国'str = re.sub('[
- MySQL数据库中如何修改root用户的密码呢?下面总结了修改root用户密码的一些方法1: 使用set password语句修改mysql
- 前言python 文件操作、文件读写(write、read、readlines、readline)、文件的相关操作,简单易懂1 文件操作文件
- 基础这个模块是socket的异步实现,让我们先来熟悉一下模块中的一些类和方法:1.asyncore.loop输入一个轮询循环直到通过计数或打
- 问题给出一段话,由短句组成,短句之间可能被任意标点符号隔开。想要提取所有的短句。解决使用 re.split 函数,用正则式匹配的方法,一次性