我有泰坦尼克号数据集,我想使用pandas.str.split
函数从人们的名字中提取标题。
>>> data.Title = data.Name.str.split('[,.]').str.get(1)
>>> data.Title
这导致以下结果,看起来很好:
0 Mr
1 Mrs
2 Miss
3 Mrs
4 Mr
5 Mr
6 Mr
7 Master
8 Mrs
...
Name: Name, Length: 1309, dtype: object
似乎每一行只有字符串,它是Mr
或Mrs
或其他任何东西。但是如果我只索引一行,它会显示这个
>>> data.Name.str.split('[,.]').str.get(1)[0]
0 Mr
0 Mr
Name: Name, dtype: object
我不知道为什么会发生这种情况,我也无法过滤数据帧:
data.Title == 'Mr'
0 False
1 False
2 False
3 False
4 False
5 False
6 False
7 False
8 False
...
data.Name.str.split('[,.]').str.get(1)[0]
表示选择所有带有index == 0
的行。如果重复的索引获得更多行。
所以有必要创建唯一的索引:
data = data.reset_index(drop=True)
对于第二个问题,有跟踪空格,因此有必要通过strip
删除它们:
data.Title = data.Name.str.split('[,.]').str.get(1).str.strip()
一起:
data = data.reset_index(drop=True)
data.Title = data.Name.str.split('[,.]').str.get(1).str.strip()