Python—在数据帧中用多个替换项拆分和替换列表的部分
在Python中,我有一个pandas数据帧中的位置列表,我希望减少每个字符串以匹配更大列表的格式,目的是合并这些列表 最后,我想让这个列表与另一个数据帧的格式匹配,这样当我合并时,我只合并“stop_name”列匹配的行 例如,在下面的列表中,我想删除“STATION”,使“BOONTON STATION”变成“BOONTON” 然而,我也希望“巴特勒·斯塔顿(新泽西)”变成“巴特勒”,去掉“车站(新泽西)” 最后,对于一个两个字的电台名称,我想保留第二个字,这样“莫里斯平原电台”就变成了“莫里斯平原电台” 基本上,我想从一个空格中删除单词“station”之前的所有内容,以及“stop\u name”列中每行单词“station”之后的所有内容。 我尝试了各种字符串的拆分和替换,我要么得到了错误,要么它没有在每一行上进行替换 如能找到可行的解决方案,我们将不胜感激Python—在数据帧中用多个替换项拆分和替换列表的部分,python,pandas,string,replace,split,Python,Pandas,String,Replace,Split,在Python中,我有一个pandas数据帧中的位置列表,我希望减少每个字符串以匹配更大列表的格式,目的是合并这些列表 最后,我想让这个列表与另一个数据帧的格式匹配,这样当我合并时,我只合并“stop_name”列匹配的行 例如,在下面的列表中,我想删除“STATION”,使“BOONTON STATION”变成“BOONTON” 然而,我也希望“巴特勒·斯塔顿(新泽西)”变成“巴特勒”,去掉“车站(新泽西)” 最后,对于一个两个字的电台名称,我想保留第二个字,这样“莫里斯平原电台”就变成了“莫
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