盤點6個Pandas中批量替換字符的方法
點擊上方“Python爬蟲與數據挖掘”,進行關注
回復“書籍”即可獲贈Python從入門到進階共10本電子書
今
日
雞
湯
朱雀橋邊野草花,烏衣巷口夕陽斜。大家好,我是Python進階者。
一、前言
前幾天在Python最強王者群有個叫【dcpeng】的粉絲問了一個關于Pandas中的問題,這里拿出來給大家分享下,一起學習。
想問一下我有一列編碼為1,2,3,4的數據,如何將1批量換為“開心”,2批量換為“悲傷”這種字符替換呢?
二、解決過程
思路挺簡單,限定Pandas處理,想到的方法有很多,這里拿出來給大家分享,希望對大家的學習有幫助。
下面這個是生成源數據的代碼:
df?=?pd.DataFrame({'col1':?[1,?2,?2,?3,?3,?3,?4,?4,?4,?4]})
df
方法一:【月神】解答
代碼如下所示:
df['col2']?=?df['col1'].map({1:"開心",?2:"悲傷",?3:"難過",?4:"淚目"})
df
運行結果如下圖所示:

方法二:【dcpeng】解答
這個方法是參考才哥的文章寫出來的,代碼如下所示:
def?getValue(s):
????if?s==1:
????????return?'開心'
????elif?s==2:
????????return?'悲傷'
????elif?s==3:
????????return?'難過'
????elif?s==4:
????????return?'淚目'
df['col3']?=?df['col1'].apply(getValue)
df
運行結果如下圖所示:

方法三:【冫馬讠成】解答
【冫馬讠成】大佬給了一個思路,使用replace實現(xiàn)。
代碼如下所示:
df['col4']?=?df['col1'].replace(1,?'開心').replace(2,?'悲傷').replace(3,?'難過').replace(4,?'淚目')
df
得到的結果如下所示:

方法四:【dcpeng】解答
這個方法是基于apply()函數,代碼如下所示:
def?get_value(s):
????dict?=?{1:"開心",?2:"悲傷",?3:"難過",?4:"淚目"}
????return?dict[s]
df['col5']?=?df['col1'].apply(get_value)
df
運行結果如下圖所示:

方法五:【沈復】解答
【沈復】大佬給了一個思路和代碼,如下圖所示:

這個方法是基于map()函數,代碼如下所示:
def?get_value(s):
????dict?=?{1:"開心",?2:"悲傷",?3:"難過",?4:"淚目"}
????return?dict[s]
df['col5']?=?df['col1'].map(get_value)
df
運行結果如下圖所示:

方法六:【月神】解答
這里【月神】仍然是使用replace方法進行實現(xiàn)的,但是代碼秀了很多。
代碼如下所示:
df['col7']?=?df['col1'].replace([1,?2,?3,?4],?['開心',?'悲傷',?'難過',?'淚目'])
df
【月神】提醒:這個是全匹配,不要加regex=True參數,不然你會后悔的!
運行結果如下圖所示:

三、總結
大家好,我是Python進階者。這篇文章基于粉絲提問,針對有一列編碼為1,2,3,4的數據,如何將1批量換為“開心”,2批量換為“悲傷”這種字符替換的問題,盤點了6個Pandas中批量替換字符的方法,給出了具體說明和演示,順利地幫助粉絲解決了問題!
最后感謝粉絲【dcpeng】提問,感謝【??(這是月亮的背面)】和【dcpeng】、【才哥】、【沈復】、大佬給出的示例和代碼支持。感謝粉絲【冫馬讠成】、【老松鼠】等人參與學習交流。

小伙伴們,快快用實踐一下吧!如果在學習過程中,有遇到任何問題,歡迎加我好友,我拉你進Python學習交流群共同探討學習。
-------------------?End?-------------------
往期精彩文章推薦:

歡迎大家點贊,留言,轉發(fā),轉載,感謝大家的相伴與支持
想加入Python學習群請在后臺回復【入群】
萬水千山總是情,點個【在看】行不行
/今日留言主題/
隨便說一兩句吧~
