Python Pandas切片列字符串(取决于条件)

时间:2018-07-18 14:00:53

标签: python pandas

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

例如,考虑一下Kaggle的“泰坦尼克号”数据集,在这里我想将“名称”列中的所有名称切成'('字符,以防万一,因为其中包括该字符,所以不存在名称中的括号和名称中仅包含括号开头的字符,因此您可以将其视为摆脱括号以与括号之前的字符保持一致。

Sample of my data set

我用这种方式:

df.loc[df['Name'].str.rfind('(') > -1, 'Name'] = df['Name'].str.slice(0, df['Name'].str.rfind('('))

基本上是在找到包含'('的名称时将其切成薄片,否则返回该名称(不包括左括号。 切片的全部内容是在开括号之前查找并获取字符。

我的解决方案无法正常工作,因为它会产生“ NaN”,我该如何解决?

1 个答案:

答案 0 :(得分:0)

您可以只使用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