繁体   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