Python/Pandas中带重复分隔符的字符串提取
我有一个数据框,其中包含一个或多个变量的任意组合,由“/”分隔符分隔,例如:Python/Pandas中带重复分隔符的字符串提取,python,regex,python-3.x,pandas,Python,Regex,Python 3.x,Pandas,我有一个数据框,其中包含一个或多个变量的任意组合,由“/”分隔符分隔,例如: Rd/MLERS Rd Rd Rd/DLEPC/DLERS SLERS MLERS 等等,等等。我想提取主分类器,即:第一个“/”字符前面的唯一变量或第一个变量。我对str.extract没有太多经验,我的努力- df["primaryEjecta1"] = df["MORPHOLOGY_EJECTA_1"].str.extract('(.*)/', expand=True) 不按预期工作- R
Rd/MLERS
Rd
Rd
Rd/DLEPC/DLERS
SLERS
MLERS
等等,等等。我想提取主分类器,即:第一个“/”字符前面的唯一变量或第一个变量。我对str.extract没有太多经验,我的努力-
df["primaryEjecta1"] = df["MORPHOLOGY_EJECTA_1"].str.extract('(.*)/', expand=True)
不按预期工作-
Rd
NaN
NaN
Rd/DLEPC
NaN
NaN
具体而言—
- 在只有一个变量的情况下,我无意中将其转换为NaN李>
- 在有三个(或更多)变量的地方,我提取前两个(或更多),而不仅仅是第一个
如果你知道如何解决这个问题,请确保这个问题很简单-但我在网上找到的大多数示例和教程都使用了漂亮、整洁的分隔符,不会重复-因此感谢你们提供的任何帮助。使用
str.split
和str[0]
访问第一个分割,即使没有分隔符,这仍将返回初始字符串:
In [121]:
df["primaryEjecta1"] = df['text'].str.split('/').str[0]
df
Out[121]:
text primaryEjecta1
0 Rd/MLERS Rd
1 Rd Rd
2 Rd Rd
3 Rd/DLEPC/DLERS Rd
4 SLERS SLERS
5 MLERS MLERS
您可以使用强大的方法:
说明:
RegEx
([^\/]+)
-表示将除/
(并且直到第一次出现/
)之外的任何东西放入第一个组中也可以指定maxslit
,因为他只需要第一部分:split('/',1)
In [31]: df
Out[31]:
txt
0 Rd/MLERS
1 Rd
2 Rd
3 Rd/DLEPC/DLERS
4 SLERS
5 MLERS
In [32]: df['clsfr'] = df['txt'].str.extract(r'([^\/]+)', expand=True)
In [33]: df
Out[33]:
txt clsfr
0 Rd/MLERS Rd
1 Rd Rd
2 Rd Rd
3 Rd/DLEPC/DLERS Rd
4 SLERS SLERS
5 MLERS MLERS