技术笔记:pandasreplace()替换用法

简介: 技术笔记:pandasreplace()替换用法

2021.02.05补充


之前写的替换都是整个值,也即是说如果被替换值='asdfg',之前的只有值等于='asdfg',才可以被替换,但是我们很多时候是值想替换局部的,比如说‘深圳地区’,替换为‘深圳市’,那么就得先str,代码如下:


main_copy【'city'】=main_copy【'city'】.str.replace('地区','市')


====================================================================


replace()


既可以替换某列,也可以替换某行,还可以全表替换


df.replace() 或者 df【col】replace()


#参数如下:


df.replace(to_replace=None, value=None, inplace=False, limit=None, regex=False, method='pad',)


参数说明:


to_replace:被替换的值


value:替换后的值


inplace:是否要改变原数据,False是不改变,True是改变,默认是False


limit:控制填充次数


regex:是否使用正则,False是不使用,True是使用,默认是False


method:填充方式,pad,ffill,bfill分别是向前、向前、向后填充


import pandas as pd


import numpy as np


#构造数据


df=pd.DataFrame({'a':【'?',7499,'?',7566,7654,'?',7782】,'b':【'SMITH', '.','$','.' ,'MARTIM','BLAKE','CLARK'】,


'c':【'CLERK','SALESMAN','$','MANAGER','$','MANAGER','$'】,


'd':【7902,7698,7698,7839,7698,7839,7839】,


'e':【'1980/12/17','1981/2/20','1981/2/22','1981/4/2','1981/9/28','1981/5/1','1981/6/9'】,


'f':【800,1600,1250,2975,1230,2859,2450】,


'g':【np.nan,300.0,500.0,np.nan,1400.0,np.nan,np.nan】,


'h':【20,30,30,20,30,30,10】})


#替换全部或者某行某列


#全部替换,这二者效果一样


df.replace(20,30)


df.replace(to_replace=20,value=30)


#某一列或者某几列


df【'h'】.replace(20,30)


df【【'b','c'】】.replace('$','rmb')


#某一行或者几行


df.iloc【1】.replace(1600,1700)


df.iloc【1:3】.replace(30,40)


#inplace=True


df.replace(20,30,inplace=True)


df.iloc【1:3】.replace(30,40,inplace=True)


#用list或者dict进行单值或者多值填充,


#单值


#注意,list是前者替换后者,dict字典里的建作为原值,字典里的值作为替换的新值


df.replace(【20,30】)


df.replace({20:30})


#多值,list是list逗号后的值替换list的值,dict字典里的建作为原值,字典里的值作为替换的新值


df.replace(【20,1600】,【40,1700】) #20被40替换,1600被1700替换


df.replace(【20,30】,'b') #20,30都被b替换


df.replace({20:30,1600:1700})


df.replace({20,30},{'a','b'}) #这个和list多值用法一样


#,method


#其实只需要传入被替换的值,


df.replace(【'a',30】,method='pad')


df.replace(【'a',30】,method='ffill')


df.replace(【'a',30】,method='bfill')


#可以直接这样表达


df.replace(30,method='bfill') #用30下面的最靠近非30的值填充


df.replace(30,method='ffill') #用30上面最靠近非30的值填充


df.replace(30,method='pad') #用30上面最靠近非30的值填充


#一般用于空值填充


df.replace(np.nan,method='bfill')


#limit


df.replace(30,method='bfill',limit=1) #现在填充的间隔数


正则替换的需要先补充一下正则表达式


#正则替换


#转义字符\可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\表示的字符就是\


#如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许用r''表示''内部的字符串默认不转义


df.replace(r'\?|.|\$',np.nan) #和原来没有变化


df.replace(r'\?|.|\$',np.nan,regex=True)#用np.nan替换?或.或$原字符


df.replace(【r'\?',r'\$'】,np.nan,regex=True)#用np.nan替换?和$


df.replace(【r'\?',r'\$'】,【np.nan,'NA'】,regex=True)#用np.nan替换?用NA替换$符号


df.replace(regex={r'\?':None})


#当然,如果不想使用inplace=True,也可以这样子表达


df=df.replace(20,30)


df.replace(20,30,inplace=True)


全部代码如下:


# -- coding: utf-8 --


"""


Created on Tue Jul 21 10:52:00 2020


@author: Admin


"""


import pandas as pd


import numpy as np


#构造数据


df=pd.DataFrame({'a':【'?',7499,'?',7566,7654,'?',7782】,'b':【'SMITH', '.','$','.' ,'MARTIM','BLAKE','CLARK'】,


'c':【'CLERK','SALESMAN','$','MANAGER','$','MANAGER','$'】,


'd':【7902,7698,7698,7839,7698,7839,7839】,


'e':【'1980/12/17','1981/2/20','1981/2/22','1981/4/2','1981/9/28','1981/5/1','1981/6/9'】,


'f':【800,1600,1250,2975,1230,2859,2450】,


'g':【np.nan,300.0,500.0,np.nan,1400.0,np.nan,np.nan】,


'h':【20,30,30,20,30,30,10】})


#替换全部或者某行某列


#全部替换,这二者效果一样


df.replace(20,30)


df.replace(to_replace=20,value=30)


#某一列或者某几列


df【'h'】.replace(20,30)


df【【'b','c'】】.replace('$','rmb')


#某一行或者几行


df.iloc【1】.replace(1600,1700)


df.iloc【1:3】.replace(30,40)


#inplace=True


df.replace(20,30,inplace=True)


df.iloc【1:3】.replace(30,40,inplace=True)


#用list或者dict进行单值或者多值填充,


#单值


#注意,list是前者替换后者,dict字典里的建作为原值,字典里的值作为替换的新值


df.replace(【20,30】)


df.replace({20:30})


#多值,list是list逗号后的值替换list的值,dict字典里的建作为原值,字典里的值作为替换的新值


df.replace(【20,1600】,【40,1700】) #20被40替换,1600被1700替换


df.replace(【20,30】,'b') #20,30都被b替换


df.replace({20:30,1600:1700})


df.replace({20,30},{'a','b'}) #这个和list多值用法//代码效果参考:http://hnjlyzjd.com/hw/wz_24733.html

一样

#,method


#其实只需要传入被替换的值,


df.replace(【'a',30】,method='pad')


df.replace(【'a',30】,method='ffill')


df.replace(【'a',30】,method='bfill')


#可以直接这样表达


df.replace(30,method='bfill') #用30下面的最靠近非30的值填充


df.replace(30,method='ffill') #用30上面最靠近非30的值填充


df.replace(30,method='pad') #用30上面最靠近非30的值填充


#一般用于空值填充


df.replace(np.nan,method='bfill')


#limit


df.replace(30,method='bfill',limit=1) #现在填充的间隔数


#正则替换


#转义字符\可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\表示的字符就是\


#如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许用r''表示''内部的字符串默认不转义


df.replace(r'\?|.|\$',np.nan) //代码效果参考:http://hnjlyzjd.com/hw/wz_24731.html

#和原来没有变化

df.replace(r'\?|.|\$',np.nan,regex=True)#用np.nan替换?或.或$原字符


df.replace(【r'\?',r'\$'】,np.nan,regex=True)#用np.nan替换?和$


df.replace(【r'\?',r'\$'】,【np.nan,'NA'】,regex=True)#用np.nan替换?用NA替换$符号


df.replace(regex={r'\?':None})


#当然,如果不想使用inplace=True,也可以这样子表达


df=df.replace(20,30)


df.replace(20,30,inplace=True)

相关文章
|
8月前
|
索引 Python
如何使用Python的Pandas库进行数据合并和拼接?
Pandas的`merge()`函数用于数据合并,如示例所示,根据'key'列对两个DataFrame执行内连接。`concat()`函数用于数据拼接,沿轴0(行)拼接两个DataFrame,并忽略原索引。
126 2
|
4月前
|
索引 Python
Pandas中的时间序列利器:set_index用法
Pandas中的时间序列利器:set_index用法
111 0
|
7月前
|
IDE 前端开发 开发工具
怎么在isort Python 代码中的导入语句进行排序和格式化
`isort` 是一个Python工具,用于自动排序和格式化代码中的导入语句,提高代码整洁度和可读性。它支持自动排序、保留空白和注释、自定义排序规则、与多种编辑器集成以及命令行使用。安装`isort`可通过`pip install isort`,使用时可直接在Python代码中导入或通过命令行处理文件。示例展示了如何在代码中使用`isort`进行导入排序,包括基本排序、自定义设置和处理多个文件。`isort`适用于标准库、第三方库和自定义模块的导入排序,还可忽略特定导入,并能与IDE和编辑器插件集成,提升开发效率。
|
7月前
|
IDE 开发工具 开发者
isort——Python 代码中的导入语句进行排序和格式化
isort,全称是 "Import Sorting",是一个 Python 工具,用来对 Python 代码中的导入语句进行排序和格式化。它可以帮助我们按照一定的规则对导入的模块进行排序,使得代码更加整洁,易于阅读和维护。
|
7月前
|
Python
技术笔记:pandasreplace()替换用法
技术笔记:pandasreplace()替换用法
|
8月前
|
Python
补充python操作excel示例xlwings常用函数
补充python操作excel示例xlwings常用函数
168 0
|
SQL 存储 JSON
Pandas.read_csv()函数及全部参数使用方法一文详解+实例代码(上)
Pandas.read_csv()函数及全部参数使用方法一文详解+实例代码
1553 0
Pandas.read_csv()函数及全部参数使用方法一文详解+实例代码(上)
|
数据处理 索引 Python
Python 之 Pandas 处理字符串和apply() 函数、applymap() 函数、map() 函数详解
Python 之 Pandas 处理字符串和apply() 函数、applymap() 函数、map() 函数详解
|
Python
python中读取txt文件时split()函数的妙用
python中读取txt文件时split()函数的妙用
534 2
python中读取txt文件时split()函数的妙用
|
机器学习/深度学习 数据挖掘 数据处理
5个例子比较Python Pandas 和R data.table
5个例子比较Python Pandas 和R data.table
148 0
5个例子比较Python Pandas 和R data.table