我想从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'
当我运行上面的代码时,我收到此错误:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
为什么?
数据集的完整问题:Titanic
答案 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)