(五)pandas-修改数据_pandas 修改指定位置的值-程序员宅基地

技术标签: pandas  

pandas修改数据可以通过以下几种方式:

1、通过切片定位到数据位置,然后直接赋值

2、mask/where 两个函数

3、replace函数

4、apply函数

以下图df为例:

1、切片方式

切片方式用于通过下标/标签直接定位到指定位置,然后修改数据

import numpy
import pandas as pd

scores = [23, 88, 12], [99, 88, 100], [44, 77, 68], [44, 77, 68]
df = pd.DataFrame(scores, index=['张三', '李四', '王五', "赵六"], columns=['语文', '数学', '英语'])

# 将张三的语文成绩改为100
df["语文"]["张三"] = 100
df.iloc[0, 0] = 100
df.loc["张三", "语文"] = 100

2、mask/where函数

mask()和where()参数相同,作用相反

mask()会把条件成立的数据改为替换数据

where()会把条件不成立的数据改为替换数据

mask()和where()是通过遍历数据源,把符合条件的数据替换为指定数据

import numpy
import pandas as pd

scores = [23, 88, 12], [99, 88, 100], [44, 77, 68], [44, 77, 68]
df = pd.DataFrame(scores, index=['张三', '李四', '王五', "赵六"], columns=['语文', '数学', '英语'])

# 把大于80的语文成绩都改成100
df["语文"].mask(df["语文"] > 80, 100, inplace=True)
# 把小于80的语文成绩都改成100
df["语文"].where(df["语文"] > 80, 100, inplace=True)

3、replace函数

replace()函数的功能很全面,用法很多,这里只是简单介绍一下,详细了解最好查看官网文档

import numpy
import pandas as pd

scores = [23, 88, 12], [99, 88, 100], [44, 77, 68], [44, 77, 68]
df = pd.DataFrame(scores, index=['张三', '李四', '王五', "赵六"], columns=['语文', '数学', '英语'])

# 将所有人的语文成绩是23的改成90
df.replace({"语文": {
     23: 90
 }}, inplace=True)

# 将所有成绩中的77改成99
df.replace(77, 99, inplace=True)
# 将王五的44分都替换成90分
df.loc["王五"].replace(44, 90, inplace=True)

4、apply函数

把df的每一行/列应用到指定的函数之上

def apply(self,
          func: (...) -> Any | str | list[(...) -> Any | str] | dict[Hashable, (...) -> Any | str | list[(...) -> Any | str]],
          axis: Literal["index", "columns", "rows"] | int = 0,
          raw: bool = False,
          result_type: Literal["expand", "reduce", "broadcast"] | None = None,
          args: tuple = (),
          **kwargs: Any)
把dataframe拆分成一个个的Series,然后依次以Series作为参数来调用func
func:
    · 应用的函数,固定接收一个Series作为第一个参数,若有其他参数可通过args和kwargs传递

axis:
    · 控制是按行还是列来拆分
    0 or 'index': 按列来拆分
    1 or 'columns': 按行来拆分
import pandas as pd

def modify_score(df):
    # 把所有人的语文都改成100分
    df["语文"] = 100

scores = [23, 88, 12], [99, 88, 100], [44, 77, 68], [44, 44, 44]
df = pd.DataFrame(scores, index=['张三', '李四', '王五', "赵六"], columns=['语文', '数学', '英语'])

df.apply(modify_score, axis=1)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/guochaogang/article/details/130513187

智能推荐

Java-序列化serialVersionUID不一致处理_java序列化时对象属性不一致报错怎么办-程序员宅基地

文章浏览阅读2k次。文章目录背景serialVersionUID不一致的兼容处理背景Java Object Serialization 会使用对象中的serialVersionUID私有静态常量长整型属性(private static final long)作为该对象的版本号,反序列化时 JVM 会校验该版本号是否和序列化时的一致,如果不一致会导致序列化失败,抛出InvalidClassException异常。默认情况下,JVM 为每一个实现了Serializable的接口的类生成一个serialVersionUID,_java序列化时对象属性不一致报错怎么办

卸载 流程_IE11卸载发生错误没有成功卸载全部更新解决方法-程序员宅基地

文章浏览阅读1w次。有很多Win7系统用户把IE浏览器升级到IE11浏览器,但是发现并不好用,或是和一些工作不兼容,想要卸载回到原来老版本的IE浏览器,可是在卸载的时候出现:发生错误,没有成功卸载全部更新,也就是说卸载失败了,那么遇到这样的情况时要怎么才能卸载呢?一起来看看小编亲测可用的解决方法。修复步骤如下:操作流程:可以先进入【C:WindowsTEMP】文件夹清空;然后以管理员身份进入【命令行提示符】;输入代码..._ie浏览器降低版本卸载失败

html纵向表头,html固定表头,表单内容垂直循环滚动-程序员宅基地

文章浏览阅读84次。Bootstrap 101 Template.content {width: 500px;margin: 50px 50px;}.header {line-height: 50px;background-color: #ECECEC;}.data {height: 300px;overflow: hidden;}姓名性别年龄职业var html = '';for(var i = 0; i <..._原生html for循环 纵向表头

Python常见报错_int' object has no attribute '__getitem__-程序员宅基地

文章浏览阅读2.3k次。1.IndexError: tuple index out of range错误的原因是元组索引越界,因为后面format中的内容出现了赋值操作2.TypeError: ‘int’ object has no attribute ‘getitem’会出现报错:在python2中,input输入数字得到的就是int类型的数字,数字是不可以做下标取值,而python3中input输入都为字符串,而字符串可以下标索引3.SyntaxError: ‘break’ outside loop原因:bre_int' object has no attribute '__getitem__

Java程序设计清考_面向对象程序设计(Java)-题库-程序员宅基地

文章浏览阅读951次。《面向对象程序设计(Java)-题库》由会员分享,可在线阅读,更多相关《面向对象程序设计(Java)-题库(33页珍藏版)》请在金锄头文库上搜索。1、面向对象程序设计 (java)题库抽题规范:(1) 此题库共 75 道题,抽 8 道作为期末考试题。其中,易 8 道,较易 33 道,较难18 道,难 16 道.(2) 按题型,第一大题抽 4 道,每道 10 分;第二大题抽 2 道,每道 10 分;..._用java实现类继承,完成如下要求:(1)设计一个表示二维平面上点的类 point,包含

数据压缩实验三 Huffman编解码算法实现与压缩效率分析_哈夫曼编码的压缩效率与-程序员宅基地

文章浏览阅读2.4k次。一、实验原理1、Huffman编码Huffman Coding(哈夫曼编码)是一种无失真的编码方式,是可变字长编码(VLC)的一种。Huffman编码基于信源的概率统计模型,它的基本思路是:出现概率大的信源符号编长码,出现概率小的信源符号编短码,从而使平均码长最小。在程序实现时常使用一种叫树的数据结构实现Huffman编码,由它编出的码是即时码。2、Huffman编码方法_哈夫曼编码的压缩效率与

随便推点

Linux中禁用ctrl alt del快捷键重启_linx 关闭 ctrl alt del-程序员宅基地

文章浏览阅读363次,点赞7次,收藏8次。【代码】Linux中禁用ctrl alt del快捷键重启。_linx 关闭 ctrl alt del

Vue.js动态获取浏览器高度、宽度并进行实时修改DOM元素高度_vue3 dom元素获取距离浏览器工具栏的高度-程序员宅基地

文章浏览阅读4.7k次,点赞2次,收藏7次。需求:项目中有高度、宽度自适应需求,需要适应不同分辨率的高度及宽度,在不同分辨率下效果区别不会很大html代码如下:<template> <div id="home"> <div class="head" > <v-head></v-head> </div&..._vue3 dom元素获取距离浏览器工具栏的高度

在SpringBoot中使用Spring Security实现权限控制_spring-security配置允许访问ip-程序员宅基地

文章浏览阅读6.8k次,点赞2次,收藏6次。以前在Spring框架中使用Spring Security需要我们进行大量的XML配置,但是,Spring Boot在这里依然有惊喜带给我们,我们今天就一起来看看。 毫无疑问,Spring Boot针对Spring Security也提供了自动配置的功能,这些默认的自动配置极大的简化了我们的开发工作,我们今天就来看看这个吧。创建Project并添加相关依赖 配置applicat..._spring-security配置允许访问ip

vmware16,vmware17虚拟机安装以及序列号备份,安装win11,进入启动界面闪退_vm17pro密钥许可证-程序员宅基地

文章浏览阅读737次,点赞9次,收藏8次。检测到hyper-v 时,勾选自动安装。_vm17pro密钥许可证

用sqoop将hive导入mysql中文乱码_sqoop --default-character-set=utf8-程序员宅基地

文章浏览阅读1.5k次。修改/etc/my.cnfcharacter-set-server=utf8[client]default-character-set=utf8注释掉 sql_mode重新新建mysql表在hive的元数据库中执行以下SQL语句,然后重新创建刚才的表即可 。alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;alter table TABLE_PARAMS modify column PAR_sqoop --default-character-set=utf8

python中将xml格式转json格式-程序员宅基地

文章浏览阅读845次。一、简介 在用python写脚本时,通常需要处理xml格式的文件或字符串。由于json格式处理的方便性, 我们可将其转为json格式进行处理。 二、步骤 1、安装工具包xmltodict 在命令行输入:pip install xmltodict 2、在代码使用xmltodict.parse(xml_str)进行处理 如 def load_json(xml_path): #获取xml文件 xml_f..._python xml 转json 格式