Python—在数据帧中用多个替换项拆分和替换列表的部分

Python—在数据帧中用多个替换项拆分和替换列表的部分,python,pandas,string,replace,split,Python,Pandas,String,Replace,Split,在Python中,我有一个pandas数据帧中的位置列表,我希望减少每个字符串以匹配更大列表的格式,目的是合并这些列表 最后,我想让这个列表与另一个数据帧的格式匹配,这样当我合并时,我只合并“stop_name”列匹配的行 例如,在下面的列表中,我想删除“STATION”,使“BOONTON STATION”变成“BOONTON” 然而,我也希望“巴特勒·斯塔顿(新泽西)”变成“巴特勒”,去掉“车站(新泽西)” 最后,对于一个两个字的电台名称,我想保留第二个字,这样“莫里斯平原电台”就变成了“莫

在Python中,我有一个pandas数据帧中的位置列表,我希望减少每个字符串以匹配更大列表的格式,目的是合并这些列表

最后,我想让这个列表与另一个数据帧的格式匹配,这样当我合并时,我只合并“stop_name”列匹配的行

例如,在下面的列表中,我想删除“STATION”,使“BOONTON STATION”变成“BOONTON”

然而,我也希望“巴特勒·斯塔顿(新泽西)”变成“巴特勒”,去掉“车站(新泽西)”

最后,对于一个两个字的电台名称,我想保留第二个字,这样“莫里斯平原电台”就变成了“莫里斯平原电台”

基本上,我想从一个空格中删除单词“station”之前的所有内容,以及“stop\u name”列中每行单词“station”之后的所有内容。

我尝试了各种字符串的拆分和替换,我要么得到了错误,要么它没有在每一行上进行替换

如能找到可行的解决方案,我们将不胜感激

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

似乎您只是想用空字符串替换模式
站。*

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