我有泰坦尼克号数据集,我想使用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
...
答案 0 :(得分:2)
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()