繁体   English   中英

根据括号位置对 Pandas 数据框值使用 str.split

[英]Using str.split for pandas dataframe values based on parentheses location

假设我有以下数据框系列 df['Name'] 列:

         Name
       'Jerry'
  'Adam (and family)'
'Paul and Hellen (and family):\n'
'John and Peter (and family):/n'

如何在第一个括号后删除 Name 中的所有内容?

df['Name']= df['Name'].str.split("'(").str[0] 

似乎不起作用,我不明白为什么?

我想要的输出是

         Name
       'Jerry'
        'Adam'
    'Paul and Hellen'
    'John and Peter'

所以括号后的所有内容都被删除。

split解决方案 - 是必要的转义(通过\\

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解决并replace

df['Name']= df['Name'].str.replace("\s+\(.*$", "")
print (df)
               Name
0           'Jerry'
1             'Adam
2  'Paul and Hellen
3   'John and Peter

\\s+\\(.*$表示从可选的whitespace替换,首先(到字符串$的末尾到"" - 空字符串。

使用正则表达式:

>>> import re
>>> str = 'Adam (and family)'
>>> result = re.sub(r"( \().*$", '', str)
>>> print result
Adam

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM