子串数据帧的最佳方法

2024-09-25 08:38:08 发布

您现在位置:Python中文网/ 问答频道 /正文

第一季度

我想从concat数据帧的Name属性中提取每个人的标题。最好的方法是什么?你知道吗

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'

第2季度

当我运行上述代码时,出现以下错误:

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

为什么?你知道吗


参考文献

数据集的全部问题:Titanic


Tags: or数据方法name标题属性titlems
2条回答

“提取”是什么意思还不清楚。你知道吗

下面的方法有用吗?你知道吗

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

使用^{},然后从结果列表中提取第二项。你知道吗

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从拆分列表中提取称呼语

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

相关问题 更多 >