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ū)分大小寫 |
| 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中的人名添加括號;人名和日期之間添加‘-’
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. 單值替換
寫入實(shí)例數(shù)據(jù):
df=pd.DataFrame({'英雄屬性':['刺客','射手','法師','戰(zhàn)士','輔助'],
'紅方英雄':['荊軻','鹵蛋','甄姬','夏侯惇','項(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. 列表替換
多個值替換單個值,將趙云和馬克替換為孫策
df.replace(['趙云','馬克'],'孫策')

多個值替換多個值,將趙云和馬克替換為橘右京和虞姬;
查找值放在一個列表里,替換值放在一個列表里,需要一一對應(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á)式‘零寬斷言’介紹
| 名稱 | 表達(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ù)字為編號;
df=pd.DataFrame({'英雄屬性':['刺客','射手','法師','戰(zhàn)士','輔助'],
'英雄信息':['荊軻36','鹵蛋1','甄姬6','夏侯惇10','項(xiàng)羽66'],
'紅方英雄':['荊軻','鹵蛋','甄姬','夏侯惇','項(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.將編號統(tǒng)一為四位數(shù)字,不足四位的使用0補(bǔ)齊;
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
總結(jié)
到此這篇關(guān)于Pandas中Replace函數(shù)使用的文章就介紹到這了,更多相關(guān)Pandas Replace函數(shù)使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python基于TCP實(shí)現(xiàn)會聊天的小機(jī)器人功能示例
這篇文章主要介紹了Python基于TCP實(shí)現(xiàn)會聊天的小機(jī)器人功能,結(jié)合實(shí)例形式分析了Python通過socket模塊實(shí)現(xiàn)TCP連接的客戶端與服務(wù)器端模擬聊天機(jī)器人功能相關(guān)操作技巧,需要的朋友可以參考下2018-04-04
Python調(diào)用百度OCR實(shí)現(xiàn)圖片文字識別的示例代碼
這篇文章主要介紹了Python調(diào)用百度OCR實(shí)現(xiàn)圖片文字識別的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
python argparse命令行參數(shù)解析(推薦)
Python argparse模塊是解析命令行參數(shù)的首選方法。解析命令行參數(shù)是一個非常常見的任務(wù),Python腳本根據(jù)傳遞的值來執(zhí)行和操作2021-06-06

