Python根据条件将列字符串切分为一个字符

Python根据条件将列字符串切分为一个字符,python,pandas,Python,Pandas,我尝试了不同的方法,根据条件将Panda列字符串切分为特定的字符 例如,考虑Kakle的泰坦尼克数据集,我想把列在“名称”中的所有名字都切成“。”('字符,如果名称中包含该字符,则名称中不存在括号,名称仅包含括号开头之前的字符。因此,您可以将其视为去掉括号以保留括号之前的内容 我用这种方式: df.loc[df['Name'].str.rfind('(') > -1, 'Name'] = df['Name'].str.slice(0, df['Name'].str.rfind('('))

我尝试了不同的方法,根据条件将Panda列字符串切分为特定的字符

例如,考虑Kakle的泰坦尼克数据集,我想把列在“名称”中的所有名字都切成“。”('字符,如果名称中包含该字符,则名称中不存在括号,名称仅包含括号开头之前的字符。因此,您可以将其视为去掉括号以保留括号之前的内容

我用这种方式:

df.loc[df['Name'].str.rfind('(') > -1, 'Name'] = df['Name'].str.slice(0, df['Name'].str.rfind('('))
基本上,当找到包含“(”的名称时,它将继续对其进行切片,否则它将返回名称(不包括左括号)。 切片的全部内容是在开始括号之前查找并提取字符


我的解决方案不起作用,因为它会产生“NaN”,如何修复它?

您可以使用
pd.Series.str.split
获取
之前的所有内容('

import pandas as pd

df = pd.DataFrame({'Name': ['Braund, Mr. Owen Harris',
                           'Cummings, Mrs. John Bradley (Florence Briggs)',
                           'Heikkinen, Miss. Laina',
                           'Futrelle, Mrs. Jacques Heath (Lily May Peel)',
                           'Allen, Mr. William Henry']})

df['Name'] = df.Name.str.split(' \(', expand=True)[0]
输出:

print(df)
                           Name
0       Braund, Mr. Owen Harris
1   Cummings, Mrs. John Bradley
2        Heikkinen, Miss. Laina
3  Futrelle, Mrs. Jacques Heath
4      Allen, Mr. William Henry

哇,非常感谢你,我不知道拆分功能。