子串pandas数据帧的最佳方法

时间:2017-07-08 07:31:21

标签: python string pandas feature-extraction kaggle

Q1

我想从Name数据框的concat属性中提取每个人的标题。这样做的最佳方式是什么?

concat['Title'][concat['Title'] == 'Mlle'] = 'Miss'
concat['Title'][concat['Title'] == 'Ms'] = 'Miss'
concat['Title'][concat['Title'] == 'Mme'] = 'Mrs'
concat['Title'][concat['Title'] == 'Dona' or 'Lady'or 'Countess'or'Capt' or 'Col'or'Don'or 'Dr'or 'Major'or 'Rev'or 'Sir'or 'Jonkheer' ] = 'Rare'

Q2

当我运行上面的代码时,我收到此错误:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

为什么?

Refrences

数据集的完整问题:Titanic

3 个答案:

答案 0 :(得分:1)

使用str.split,然后从结果列表中提取第二项。

In [37]: df['Name'].head()
Out[37]: 
0                              Braund, Mr. Owen Harris
1    Cumings, Mrs. John Bradley (Florence Briggs Th...
2                               Heikkinen, Miss. Laina
3         Futrelle, Mrs. Jacques Heath (Lily May Peel)
4                             Allen, Mr. William Henry
Name: Name, dtype: object

这里的观察是名称遵循以下格式:姓氏称呼 给定名称。我们将拆分空格并使用df.apply从拆分列表中提取 Salutation

In [38]: df['Title'] = df['Name'].str.split(' ').apply(lambda x: x[1])

In [39]: df['Title'].head()
Out[39]: 
0      Mr.
1     Mrs.
2    Miss.
3     Mrs.
4      Mr.
Name: Title, dtype: object

答案 1 :(得分:0)

"提取"意思不明确。

以下是否有帮助?

import pandas as pd

df = pd.DataFrame([{'id': 1 , 'title' : 'mrs'},
                  {'id': 2 , 'title' : 'mr'},
                  {'id': 3 , 'title' : 'mr'},
                  {'id': 4 , 'title' : 'mrs'}])

df[df.title == 'mrs']
#   id title
#0   1   mrs
#3   4   mrs

df[((df.title == 'mrs') | (df.title == 'mr'))]
#   id title
#0   1   mrs
#1   2    mr
#2   3    mr
#3   4   mrs

答案 2 :(得分:0)

要从数据集的名称特征中提取“船长先生夫人”上尉

for _ in data:
data['Title'] = dataset['Name'].str.extract(' ([A-Za-z]+)\.', expand = False)