簡體   English   中英

Function 去除Pandas系列中大寫字母前的部分字符串

[英]Function to remove a part of a string before a capital letter in Pandas Series

我有一個 dataframe,其中包含一列 ['locality_name'],其中包含村庄、城鎮、城市的名稱。 有些名字寫成“漢密爾頓鎮”,有些像“漢密爾頓”,有些像“漢密爾頓市”等。因此,很難計算唯一值等。我的目標是只留下名字。

我想寫一個 function 刪除字符串的一部分直到大寫字母,然后將它應用於我的 dataframe。

那就是我試過的:

重新進口

def my_slicer(row): """ Returns a string with the name of locality """ return re.sub('ABCDEFGHIKLMNOPQRSTVXYZ','', row['locality_name'])

raw_data['locality_name_only'] = raw_data.apply(my_slicer, axis=1)

我期望它返回一個包含地名的新列。 相反,沒有任何改變 - ['locality_name_only'] 與 ['locality_name'] 具有相同的值。

您可以使用pandas.Series.str.extract 例如:

ser = pd.Series(["town of Hamilton", "Hamilton", "city of Hamilton"])
ser_2= ser.str.extract("([A-Z][a-z]+-?\w+)")

在你的情況下,使用:

raw_data['locality_name_only'] = raw_data['locality_name'].str.extract("([A-Z][a-z]+-?\w+)")

#Output:

print(ser_2)

          0
0  Hamilton
1  Hamilton
2  Hamilton

我會使用str.replace並將問題表述為刪除所有非大寫單詞:

raw_data["locality_name_only"] = df["locality_name"].str.replace(r'\s*\b[a-z]\w*\s*', ' ', regex=True).str.strip()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM