Pandas中Replace函数使用那些事儿

 更新时间:2022年11月29日 11:22:22   作者:西瓜WiFi  
Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的,下面这篇文章主要给大家介绍了关于Pandas中Replace函数使用那些事儿,文中通过实例代码以及图文介绍的非常详细,需要的朋友可以参考下

一、Series 数据替换s.str.replace()

s.sr.replace(pat,repl,n=-1,case=None,flags=0,regex=None)

函数详解:

pat要查找的字符串
repl替换的字符串,可以调用函数
n 要进行的替换数,默认全部
case是否区分大小写
flagsre模块中的标志
regex是否设置为正则表达式

1. 普通查找替换

将曹操替换为刘备

import pandas as pd
s=pd.Series(['曹操','大乔','小乔'])
s.str.replace('曹操','刘备')

2.正则表达式替换

将字符串中的‘~’和‘/’替换为'-'

import pandas as pd
s=pd.Series(['2022-5-5','2022/5/6','2022~6~9'])
s.str.replace('[~/]','-',regex=True)

3. 预编译好的正则表达式替换

将字符串中的‘~’和‘/’替换为'-'

import pandas as pd
import re
s=pd.Series(['2022-5-5','2022/5/6','2022~6~9'])
pat=re.compile('[~/]')
s.str.replace(pat,'-',regex=True)

4. 函数替换

给Series中的人名添加括号;人名和日期之间添加‘-’

import pandas as pd
import re
s=pd.Series(['Aaron2022-5-5','Bob2022-5-6','judy2022-6-9'])
s.str.replace('[a-zA-Z]+',lambda x: '('+x[0]+')'+'-',regex=True)

5. 分组替换

殊途同归,分组替换可以实现与函数替换一样的目的;

s=pd.Series(['Aaron2022-5-5','Bob2022-5-6','judy2022-6-9'])
s.str.replace('([a-zA-Z]+)',r"【\1】-",regex=True)

二、DataFrame 数据替换 df.replace()

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

函数详解:

to_replace查找要替换的值
value替换与查找匹配的值
inplace修改原数据
limit向前或向后填充的最大尺寸间隙
regex是否支持正则表达式
method替换方法

1. 单值替换

写入实例数据:

df=pd.DataFrame({'英雄属性':['刺客','射手','法师','战士','辅助'],
                '红方英雄':['荆轲','卤蛋','甄姬','夏侯惇','项羽'],
                '红方伤害':[11.20,15.34,8.57,6.98,3.69],
                 '红方死亡次数':['1次','10次','8次','5次','6次'],
                '蓝方英雄':['赵云','马克','干将','吕布','刘禅'],
                '蓝方伤害':[10.82,11.36,10.87,9.69,6.53],
                '蓝方死亡次数':['5次','8次','4次','7次','10次']})
df

将荆轲替换为孙悟空; 

df.replace('荆轲','孙悟空')

2. 列表替换

多个值替换单个值,将赵云和马克替换为孙策

df.replace(['赵云','马克'],'孙策')

多个值替换多个值,将赵云和马克替换为橘右京和虞姬;

查找值放在一个列表里,替换值放在一个列表里,需要一一对应;

df.replace(['赵云','马克'],['橘右京','虞姬'])

3.字典替换

(1)字典替换,将赵云和马克替换为橘右京和虞姬

传入字典的键为要查找的值,值为要替换的值;

df.replace({
    '赵云':'橘右京',
    '马克':'虞姬'
})

(2)指定列替换

将红方英雄甄姬替换为貂蝉,项羽替换为钟馗;蓝方英雄吕布替换为孙策,干将替换为杨玉环;

df.replace({
    '红方英雄':{
        '甄姬':'貂蝉',
        '项羽':'钟馗'
    },
    '蓝方英雄':{
        '吕布':'孙策',
        '干将':'杨玉环'
    }
})

 (3)多列替换

将红方伤害11.2,蓝方伤害11.36,9.69替换为9.999

df.replace({'红方伤害':11.2,'蓝方伤害':[11.36,9.69]},9.999)

三、DataFrame 正则替换 

1. 正则表达式‘零宽断言’介绍

名称表达式解释
零宽正向先行断言(?=exp)匹配后面是exp表达式的字符串
零宽负向先行断言(?!exp)匹配后面不是exp表达式的字符串
零宽正向后行断言(?<=exp)匹配前面是exp表达式的字符串
零宽负向后行断言(?<!exp)匹配前面不是exp表达式的字符串

2. 单值正则替换

在红方死亡次数和蓝方死亡次数数字和‘次’之间添加‘-’

df.replace(
    to_replace='(^\d+)(?=\D)',
    value=r'\1-',
    regex=True
)

3. 列表正则替换

列表替换,给红方英雄添加‘【】’

df['红方英雄']=df['红方英雄'].replace(
    regex=['^','$'],
    value=['【','】'],
)
df

4. 字典正则替换

 字典正则替换,给蓝方英雄添加‘[]’

df.replace(
regex={
    '蓝方英雄':{'^':'[','$':']'}
})

四、DataFrame替换实例应用 

原数据如下:英雄信息列后面数字为编号;

df=pd.DataFrame({'英雄属性':['刺客','射手','法师','战士','辅助'],
                 '英雄信息':['荆轲36','卤蛋1','甄姬6','夏侯惇10','项羽66'],
                '红方英雄':['荆轲','卤蛋','甄姬','夏侯惇','项羽'],
                '红方伤害':[11.20,15.34,8.57,6.98,3.69],
                 '红方死亡次数':['1次','10次','8次','5次','6次'],
                '蓝方英雄':['赵云','马克','干将','吕布','刘禅'],
                '蓝方伤害':[10.82,11.36,10.87,9.69,6.53],
                '蓝方死亡次数':['5次','8次','4次','7次','10次']})
df

 1.将编号统一为四位数字,不足四位的使用0补齐;

df['英雄信息'].str.replace(
    pat='(\d+)',
    repl=lambda x: '0'*(4-len(x[0]))+x[0],
    regex=True
)

 2. 给编号前面加上Timi,并使用‘-’分隔

df['英雄信息']=df['英雄信息'].str.replace(
    pat='(\d+)',
    repl=lambda x: '-Timi'+'0'*(4-len(x[0]))+x[0],
    regex=True
)
df

总结

到此这篇关于Pandas中Replace函数使用的文章就介绍到这了,更多相关Pandas Replace函数使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决

    Pycharm Available Package无法显示/安装包的问题Error Loading Package Li

    这篇文章主要介绍了Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 使用Python程序计算钢琴88个键的音高

    使用Python程序计算钢琴88个键的音高

    这篇文章介绍了使用Python程序计算钢琴88个键的音高,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • 浅谈Python peewee 使用经验

    浅谈Python peewee 使用经验

    这篇文章主要介绍了浅谈Python peewee 使用经验,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • PyTorch加载模型model.load_state_dict()问题及解决

    PyTorch加载模型model.load_state_dict()问题及解决

    这篇文章主要介绍了PyTorch加载模型model.load_state_dict()问题及解决,具有很好的参考价值,希望对大家有所帮助。
    2023-02-02
  • python中使用.py配置文件的方法详解

    python中使用.py配置文件的方法详解

    这篇文章主要介绍了python中使用.py配置文件的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • Python Matplotlib数据可视化模块使用详解

    Python Matplotlib数据可视化模块使用详解

    matplotlib是基建立在python之上,适用于创建静态,动画和交互式可视化,通常与数据分析模块pandas搭配使用,用于数据的分析和展示,适用于主流的操作系统,如Linux、Win、Mac
    2022-11-11
  • Python Pandas的简单使用教程

    Python Pandas的简单使用教程

    Pandas 是python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,并于2009年底开源出来,目前由专注于Python数据包开发的PyData开发team继续开发和维护,今天通过本文给大家介绍Python Pandas的简单使用教程,感兴趣的朋友一起看看吧
    2021-08-08
  • 基于wxPython的GUI实现输入对话框(2)

    基于wxPython的GUI实现输入对话框(2)

    这篇文章主要为大家详细介绍了基于wxPython的GUI实现输入对话框的第二篇,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • Python 基于TCP 传输协议的网络通信实现方法

    Python 基于TCP 传输协议的网络通信实现方法

    网络编程指在网络环境中,如何实现不在同一物理位置中的计算机之间进行数据通信,本文重点给大家介绍Python 基于TCP 传输协议的网络通信实现方法,感兴趣的朋友跟随小编一起看看吧
    2022-02-02
  • Django中间件整合Vue拦截器的使用

    Django中间件整合Vue拦截器的使用

    本文主要介绍了Django中间件整合Vue拦截器的使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09

最新评论