簡體   English   中英

Python - 在 pandas dataframe 中使用多個替換來拆分和替換列表的部分

[英]Python - Splitting and replacing parts of a list with multiple replacements in a pandas dataframe

在 Python 中,我有一個 pandas dataframe 中的位置列表,我想減少每個字符串以匹配更大列表的格式,並以列表為目標。

最終,我想讓這個列表與另一個 dataframe 的格式相匹配,這樣當我合並時,我只合並“stop_name”列匹配的行。

例如,在下面的列表中,我想刪除“STATION”,這樣“BOONTON STATION”就變成了“BOONTON”。

但是,我也希望“BUTLER STATON (NEW JERSEY)”變成“BUTLER”,刪除“STATION (NEW JERSEY)”。

最后,對於兩個單詞的站名,我想保留第二個單詞,這樣“MORRIS PLAINS STATION”就變成了“MORRIS PLAINS”。

基本上,我想從“站”一詞之前的一個空格中刪除所有內容,以及“stop_name”列中每一行的所有內容。

我嘗試了各種拆分和替換字符串,但我要么遇到錯誤,要么沒有在每一行上進行替換。

任何可行的解決方案的方向將不勝感激。

stop_name
0   BOONTON STATION
1   BUTLER STATION (NEW JERSEY)
2   CONVENT STATION (NJ TRANSIT)
3   DOVER STATION (NJ TRANSIT)
4   LAKE HOPATCONG STATION
5   MADISON STATION (NJ TRANSIT)
6   MILLINGTON STATION
7   MORRIS PLAINS STATION
8   MORRISTOWN STATION
9   MOUNT ARLINGTON STATION
10  MOUNT TABOR STATION
12  POMPTON PLAINS STATION
13  TOWACO STATION

看來您只想用空字符串替換模式STATION.*

df.stop_name.str.replace(' STATION.*', '')

0             BOONTON
1              BUTLER
2             CONVENT
3               DOVER
4      LAKE HOPATCONG
5             MADISON
6          MILLINGTON
7       MORRIS PLAINS
8          MORRISTOWN
9     MOUNT ARLINGTON
10        MOUNT TABOR
12     POMPTON PLAINS
13             TOWACO
Name: stop_name, dtype: object

正則表達式extract()是直截了當的。

df = pd.read_csv(io.StringIO("""stop_name
0   BOONTON STATION
1   BUTLER STATION (NEW JERSEY)
2   CONVENT STATION (NJ TRANSIT)
3   DOVER STATION (NJ TRANSIT)
4   LAKE HOPATCONG STATION
5   MADISON STATION (NJ TRANSIT)
6   MILLINGTON STATION
7   MORRIS PLAINS STATION
8   MORRISTOWN STATION
9   MOUNT ARLINGTON STATION
10  MOUNT TABOR STATION
12  POMPTON PLAINS STATION
13  TOWACO STATION"""), sep="\s\s+", engine="python")

df.stop_name = df.stop_name.str.extract(r"(^.*) STATION.*$")


停止名稱
0 布頓
1 管家
2 修道院
3 多佛
4 霍帕聰湖
5 麥迪遜
6 米靈頓
7 莫里斯平原
8 莫里斯敦
9 阿靈頓山
10 泰伯山
12 龐普頓平原
13 托瓦科

沒有正則表達式的替代方案:

>>> df["stop_name"].str.split("STATION").str[0].str.strip()
0             BOONTON
1              BUTLER
2             CONVENT
3               DOVER
4      LAKE HOPATCONG
5             MADISON
6          MILLINGTON
7       MORRIS PLAINS
8          MORRISTOWN
9     MOUNT ARLINGTON
10        MOUNT TABOR
12     POMPTON PLAINS
13             TOWACO
Name: stop_name, dtype: object

暫無
暫無

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

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