[英]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.