【发布时间】:2021-12-01 06:44:22
【问题描述】:
我有数据集。这是“名称”列:
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
...
151 Pears, Mrs. Thomas (Edith Wearne)
152 Meo, Mr. Alfonzo
153 van Billiard, Mr. Austin Blyler
154 Olsen, Mr. Ole Martin
155 Williams, Mr. Charles Duane
并且需要提取名字、状态和第二个名字。当我在简单的字符串上尝试这个时,没关系:
full_name="Braund, Mr. Owen Harris"
first_name=full_name.split(',')[0]
second_name=full_name.split('.')[1]
print('First name:',first_name)
print('Second name:',second_name)
status = full_name.replace(first_name, '').replace(',','').split('.')[0]
print('Status:',status)
>First name: Braund
>Second name: Owen Harris
>Status: Mr
但在尝试使用 pandas 执行此操作后,我因状态失败:
df['first_Name'] = df['Name'].str.split(',').str.get(0) #its ok, worsk well
但是在这之后:
status= df['Name'].str.replace(df['first_Name'], '').replace(',','').split('.').str.get(0)
我弄错了:
>>TypeError: 'Series' objects are mutable, thus they cannot be hashed
有哪些可能的解决方案?
编辑:感谢您的回答并提取列。我愿意
def extract_name_data(row):
row.str.extract('(?P<first_name>[^,]+), (?P<status>\w+.) (?P<second_name>[^(]+\w) ?')
last_name = row['second_name']
title = row['status']
first_name = row['first_name']
return first_name, second_name, status
得到
AttributeError: 'str' object has no attribute 'str'
可以做什么?行的意思是 df['Name']
【问题讨论】:
标签: python pandas string dataframe replace