Python 基于括号位置对数据帧值使用str.split
假设我有以下dataframe series df['Name']列:Python 基于括号位置对数据帧值使用str.split,python,pandas,split,Python,Pandas,Split,假设我有以下dataframe series df['Name']列: Name 'Jerry' 'Adam (and family)' 'Paul and Hellen (and family):\n' 'John and Peter (and family):/n' 如何删除名称中第一个括号后的所有内容 df['Name']= df['Name'].str.split("'(").str[0] 似乎不起作用,我不明白为什么 我想要的输出是
Name
'Jerry'
'Adam (and family)'
'Paul and Hellen (and family):\n'
'John and Peter (and family):/n'
如何删除名称中第一个括号后的所有内容
df['Name']= df['Name'].str.split("'(").str[0]
似乎不起作用,我不明白为什么
我想要的输出是
Name
'Jerry'
'Adam'
'Paul and Hellen'
'John and Peter'
因此,括号后的所有内容都将被删除。使用正则表达式:
>>> import re
>>> str = 'Adam (and family)'
>>> result = re.sub(r"( \().*$", '', str)
>>> print result
Adam
带-的解决方案是必要的转义(
通过\
:
df['Name']= df['Name'].str.split("\s+\(").str[0]
print (df)
Name
0 'Jerry'
1 'Adam
2 'Paul and Hellen
3 'John and Peter
带有regex的解决方案
和:
\s+\(.*$
表示从可选的空白
,第一个(
到字符串的结尾到)
-空字符串。这适用于str而不是dataframe对象…TypeError:预期的字符串或字节,如objectUsestr.replace
,它允许使用正则表达式:用其他字符串替换序列/索引中出现的模式/正则表达式。等效于str.replace()或re.sub().
请参阅更多信息:“(().*$”实际上是什么意思?我不是正则表达式专家,所以我尝试解释我是如何理解它的。
df['Name']= df['Name'].str.replace("\s+\(.*$", "")
print (df)
Name
0 'Jerry'
1 'Adam
2 'Paul and Hellen
3 'John and Peter