Pandas中Replace函數(shù)使用那些事兒
一、Series 數(shù)據(jù)替換s.str.replace()
s.sr.replace(pat,repl,n=-1,case=None,flags=0,regex=None)
函數(shù)詳解:
pat | 要查找的字符串 |
repl | 替換的字符串,可以調(diào)用函數(shù) |
n | 要進(jìn)行的替換數(shù),默認(rèn)全部 |
case | 是否區(qū)分大小寫(xiě) |
flags | re模塊中的標(biāo)志 |
regex | 是否設(shè)置為正則表達(dá)式 |
1. 普通查找替換
將曹操替換為劉備
import pandas as pd s=pd.Series(['曹操','大喬','小喬']) s.str.replace('曹操','劉備')
2.正則表達(dá)式替換
將字符串中的‘~’和‘/’替換為'-'
import pandas as pd s=pd.Series(['2022-5-5','2022/5/6','2022~6~9']) s.str.replace('[~/]','-',regex=True)
3. 預(yù)編譯好的正則表達(dá)式替換
將字符串中的‘~’和‘/’替換為'-'
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. 函數(shù)替換
給Series中的人名添加括號(hào);人名和日期之間添加‘-’
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. 分組替換
殊途同歸,分組替換可以實(shí)現(xiàn)與函數(shù)替換一樣的目的;
s=pd.Series(['Aaron2022-5-5','Bob2022-5-6','judy2022-6-9']) s.str.replace('([a-zA-Z]+)',r"【\1】-",regex=True)
二、DataFrame 數(shù)據(jù)替換 df.replace()
df.replace(to_replace=None,value=None,inplace=False,limit=None,regex=False,method='pad)
函數(shù)詳解:
to_replace | 查找要替換的值 |
value | 替換與查找匹配的值 |
inplace | 修改原數(shù)據(jù) |
limit | 向前或向后填充的最大尺寸間隙 |
regex | 是否支持正則表達(dá)式 |
method | 替換方法 |
1. 單值替換
寫(xiě)入實(shí)例數(shù)據(jù):
df=pd.DataFrame({'英雄屬性':['刺客','射手','法師','戰(zhàn)士','輔助'], '紅方英雄':['荊軻','鹵蛋','甄姬','夏侯?lèi)?,'項(xiàng)羽'], '紅方傷害':[11.20,15.34,8.57,6.98,3.69], '紅方死亡次數(shù)':['1次','10次','8次','5次','6次'], '藍(lán)方英雄':['趙云','馬克','干將','呂布','劉禪'], '藍(lán)方傷害':[10.82,11.36,10.87,9.69,6.53], '藍(lán)方死亡次數(shù)':['5次','8次','4次','7次','10次']}) df
將荊軻替換為孫悟空;
df.replace('荊軻','孫悟空')
2. 列表替換
多個(gè)值替換單個(gè)值,將趙云和馬克替換為孫策
df.replace(['趙云','馬克'],'孫策')
多個(gè)值替換多個(gè)值,將趙云和馬克替換為橘右京和虞姬;
查找值放在一個(gè)列表里,替換值放在一個(gè)列表里,需要一一對(duì)應(yīng);
df.replace(['趙云','馬克'],['橘右京','虞姬'])
3.字典替換
(1)字典替換,將趙云和馬克替換為橘右京和虞姬
傳入字典的鍵為要查找的值,值為要替換的值;
df.replace({ '趙云':'橘右京', '馬克':'虞姬' })
(2)指定列替換
將紅方英雄甄姬替換為貂蟬,項(xiàng)羽替換為鐘馗;藍(lán)方英雄呂布替換為孫策,干將替換為楊玉環(huán);
df.replace({ '紅方英雄':{ '甄姬':'貂蟬', '項(xiàng)羽':'鐘馗' }, '藍(lán)方英雄':{ '呂布':'孫策', '干將':'楊玉環(huán)' } })
(3)多列替換
將紅方傷害11.2,藍(lán)方傷害11.36,9.69替換為9.999
df.replace({'紅方傷害':11.2,'藍(lán)方傷害':[11.36,9.69]},9.999)
三、DataFrame 正則替換
1. 正則表達(dá)式‘零寬斷言’介紹
名稱(chēng) | 表達(dá)式 | 解釋 |
零寬正向先行斷言 | (?=exp) | 匹配后面是exp表達(dá)式的字符串 |
零寬負(fù)向先行斷言 | (?!exp) | 匹配后面不是exp表達(dá)式的字符串 |
零寬正向后行斷言 | (?<=exp) | 匹配前面是exp表達(dá)式的字符串 |
零寬負(fù)向后行斷言 | (?<!exp) | 匹配前面不是exp表達(dá)式的字符串 |
2. 單值正則替換
在紅方死亡次數(shù)和藍(lán)方死亡次數(shù)數(shù)字和‘次’之間添加‘-’
df.replace( to_replace='(^\d+)(?=\D)', value=r'\1-', regex=True )
3. 列表正則替換
列表替換,給紅方英雄添加‘【】’
df['紅方英雄']=df['紅方英雄'].replace( regex=['^','$'], value=['【','】'], ) df
4. 字典正則替換
字典正則替換,給藍(lán)方英雄添加‘[]’
df.replace( regex={ '藍(lán)方英雄':{'^':'[','$':']'} })
四、DataFrame替換實(shí)例應(yīng)用
原數(shù)據(jù)如下:英雄信息列后面數(shù)字為編號(hào);
df=pd.DataFrame({'英雄屬性':['刺客','射手','法師','戰(zhàn)士','輔助'], '英雄信息':['荊軻36','鹵蛋1','甄姬6','夏侯?lèi)?0','項(xiàng)羽66'], '紅方英雄':['荊軻','鹵蛋','甄姬','夏侯?lèi)?,'項(xiàng)羽'], '紅方傷害':[11.20,15.34,8.57,6.98,3.69], '紅方死亡次數(shù)':['1次','10次','8次','5次','6次'], '藍(lán)方英雄':['趙云','馬克','干將','呂布','劉禪'], '藍(lán)方傷害':[10.82,11.36,10.87,9.69,6.53], '藍(lán)方死亡次數(shù)':['5次','8次','4次','7次','10次']}) df
1.將編號(hào)統(tǒng)一為四位數(shù)字,不足四位的使用0補(bǔ)齊;
df['英雄信息'].str.replace( pat='(\d+)', repl=lambda x: '0'*(4-len(x[0]))+x[0], regex=True )
2. 給編號(hào)前面加上Timi,并使用‘-’分隔
df['英雄信息']=df['英雄信息'].str.replace( pat='(\d+)', repl=lambda x: '-Timi'+'0'*(4-len(x[0]))+x[0], regex=True ) df
總結(jié)
到此這篇關(guān)于Pandas中Replace函數(shù)使用的文章就介紹到這了,更多相關(guān)Pandas Replace函數(shù)使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解如何用django實(shí)現(xiàn)redirect的幾種方法總結(jié)
這篇文章主要介紹了如何用django實(shí)現(xiàn)redirect的幾種方法總結(jié),詳細(xì)的介紹3種實(shí)現(xiàn)方式,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11python皮爾遜相關(guān)性數(shù)據(jù)分析分析及實(shí)例代碼
這篇文章主要為大家介紹了python皮爾遜相關(guān)性分析及實(shí)例代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02Python設(shè)計(jì)模式之解釋器模式原理與用法實(shí)例分析
這篇文章主要介紹了Python設(shè)計(jì)模式之解釋器模式原理與用法,結(jié)合具體實(shí)例形式分析了解釋器模式的概念、原理、定義及使用方法,需要的朋友可以參考下2019-01-01Python3遍歷目錄樹(shù)實(shí)現(xiàn)方法
這篇文章主要介紹了Python3遍歷目錄樹(shù)實(shí)現(xiàn)方法,涉及Python目錄樹(shù)的遍歷操作技巧,需要的朋友可以參考下2015-05-05pip?install?python-Levenshtein失敗的解決
這篇文章主要介紹了pip?install?python-Levenshtein失敗的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02