在pd.DataFrame中删除最后一个单词

时间:2019-01-28 03:07:35

标签: python string pandas

我有一个熊猫数据框,其中的地址栏充满了。通常,我的格式不一致,并且希望使格式一致。

作为示例:

df = pd.DataFrame({'apt': [1, 2, 3], 'unit': ['f', 'g', 'a'], 'address: 
['15 E 59th St', '4 4th St', '4 83rd street']})

我目前正在按以下方式格式化我的列:

df['address'] = df['address'].str.title().str.replace(r"(\d+) 
(st|nd|rd|th)\b", r"\1")

从街道号码中删除“常规”。但是,有时地址以缩写“ st”结尾,有时以全称“ street”结尾,我认为仅删除每个字符串的最后一个单词将是解决此问题的最简单方法。我该如何以Python的方式执行此操作,以便将某些内容应用于删除最后一个单词的整个列?我已经尝试过rsplit,但无法按照我的方式使用:

df['address'].str.title().str.replace(r"(\d+)(st|nd|rd|th)\b", 
r"\1").str.rsplit([' ', 1])[0]

编辑:当前答案非常有帮助,但是我已经意识到,在某些街道和大街的起点相同(第一次和第一次)的情况下,删除街道类型实际上是行不通的。有没有办法使街道尽头保持一致,以便所有街道尽头的所有版本都相同?

1 个答案:

答案 0 :(得分:2)

使用str.rsplit

df.address.str.rsplit(' ',1).str[0]
0    15 E 59th
1        4 4th
2       4 83rd
Name: address, dtype: object
df.address=df.address.str.rsplit(' ',1).str[0]