Pandas中替換值的簡單方法

使用內建的 Pandas 方法進行高階資料處理和字串操作

Pandas 庫被廣泛用作資料處理和分析工具,用於從資料中清理和提取特徵。

在處理資料時,編輯或刪除某些資料作為預處理步驟的一部分。 這可能涉及從現有列建立新列,或修改現有列以使它們適合更易於使用。 為此,Pandas 提供了多種方法,您可以使用這些方法來處理 DataFrame 中所有資料型別的列。

在這篇文章中,讓我們具體看看在 DataFrame 中的列中替換值和子字串。 當您想替換列中的每個值或只想編輯值的一部分時,這會派上用場。

如果您想繼續,請在此處下載資料集並載入下面的程式碼。

import pandas as pddf = pd。read_csv(‘WordsByCharacter。csv’)

Pandas中替換值的簡單方法

使用“替換”來編輯 Pandas DataFrame 系列(列)中的字串

Pandas 中的 replace 方法允許您在 DataFrame 中的指定系列中搜索值,以查詢隨後可以更改的值或子字串。 首先,讓我們快速看一下如何透過將“Of The”更改為“of the”來對錶中的“Film”列進行簡單更改。

# change “Of The” to “of the” - simple regexdf[“Film”]。replace(“Of The”, “of the”) # won‘t work if you do thisdf[“Film”]。replace(“Of The”, “of the”, regex=True)

Pandas中替換值的簡單方法

上面,我們所做的只是將我們正在尋找的子字串作為第一個引數傳遞給 replace 方法,然後將我們想要替換的值作為第二個引數傳遞。 您會看到我們還必須傳遞 regex=True 才能使操作生效。 否則,replace 方法只會更改“Of The”的列值,因為它只會匹配整個值。

您可以透過匹配確切的字串並提供您想要更改的整個值來完成我們上面所做的相同的事情,如下所示。

df[“Film”]。replace(“The Fellowship Of The Ring”, “The Fellowship of the Ring”)

Pandas中替換值的簡單方法

這種方法的問題在於您、必須逐案匹配值。 也就是說,需要傳遞想要更改的每個值,以及希望將其更改為什麼值。 在某些情況下,使用查詢和替換與定義的正則表示式匹配的所有內容可能更容易。

但是,在想要將不同的值更改為不同的替換值的情況下,不必多次呼叫 replace 方法。 相反,可以簡單地傳遞一個字典,其中鍵是要搜尋的列值,而值是要替換原始值的內容。 下面是一個簡單的例子。

# you can do multiple replacements in within one call of the replace method by creating a mapping dictionary# very scalable wooreplacement_mapping_dict = {“The Fellowship Of The Ring”: “The Fellowship of the Ring”,“The Return Of The King”: “The Return of the King”}df[“Film”]。replace(replacement_mapping_dict)

Pandas中替換值的簡單方法

之前,我們只是簡單地傳遞 regex=True 以便我們可以匹配子字串。 讓我們更進一步,實際編寫一些正則表示式來匹配。 讓我們做一些資料清理,並在 replace 方法中使用正則表示式刪除這些資料。

# remove number number colon from “Chapter” - bit more complex regex example# regex is just <= 3 repetitions of any numeric character (0-9) immediately followed by a colon and a spacedf[“Chapter”]。replace(r“\d{,3}: ”, “”, regex=True)

Pandas中替換值的簡單方法

我們所做的只是傳遞 r“\d{,3}: ” 來匹配三個或更少的數字字元後跟一個冒號和一個空格(這將捕獲“01:”、“02:”、。。。、“100 : “, 等等)。 每當在列值中找到它時,它就會從字串中刪除,因為我們傳遞的第二個引數是一個空字串。

或者,如果您不想每次呼叫 replace 方法時都傳遞 regex=True,則可以改為完成上述相同的結果,如下所示:

# alternate way of doing the same thing (instead of having to pass regex=True at the end)# if you had multiple things you want to replace you can put them all in a listregex_list = [r“\d{,3}: ”, r“The ”]df[“Chapter”]。replace(regex=regex_list, value=“”)

Pandas中替換值的簡單方法

結果與之前相同,但有一些差異使此方法更加清晰。 首先,如果有多個想要匹配的正則表示式,可以在列表中定義它們,並將其作為關鍵字引數傳遞給 replace 方法。 然後,只需要顯式傳遞另一個關鍵字引數值來定義想要的替換值。 這樣如果有人檢視的程式碼可能會很容易理解它的作用並對其進行擴充套件。

在清理資料時,這是一個相當常見的過程,所以我希望您發現這篇對 Pandas 替換方法的快速介紹對自己的工作有用。

祝你的資料之旅好運!

作者:Byron Dolon