python-3.x pandas中姓氏为多个名字时如何获取名字和姓氏

lhcgjxsq  于 2023-05-30  发布在  Python
关注(0)|答案(3)|浏览(222)

我有一个数据框,需要将名字和姓氏分开。到目前为止,这是我得到的地方。

df = [['Victor De La Cruz', 'Ashley Smith', 'Angel Miguel Hernandez', 'Hank Hill']] 

df['first_name'] = df.str.split().str[0]
df['last_name'] = df.str.split().str[1:]

输出

first_name        last_name 
 Victor           [De, La, Cruz]
 Ashley           [Smith] 
 Angel            [Miguel, Hernandez]
 Hank             [Hill]

我试过用df'last_name'].replace('[', '')来处理所有不需要的字符,但是没有用。
期望输出

first_name      last_name 
   Paul          De La Cruz 
   Ashley        Smith 
   Angel         Miguel Hernandez
   Hank          Hill

任何建议将是有益的,谢谢!

ar7v8xwq

ar7v8xwq1#

加入我们

df['last_name'] = df['last_name'].str.join(' ')

split()之后,您的系列中有列表对象,而不是字符串,这就是为什么.replace()没有意义。

vshtjzan

vshtjzan2#

我建议使用n关键字参数将拆分限制在第一个空格。也可以使用expand=True

import pandas as pd

s = pd.Series([
    'Victor De La Cruz',
    'Ashley Smith',
    'Angel Miguel Hernandez',
    'Hank Hill'
])

df = s.str.split(n=1, expand=True)
df.columns = ["first_name", "last_name"]
first_name         last_name
0     Victor        De La Cruz
1     Ashley             Smith
2      Angel  Miguel Hernandez
3       Hank              Hill
bprjcwpo

bprjcwpo3#

拆分列表,然后加入项目

name = "Ima Coding Nubie".split()
first_name = name[0]
last_name = " ".join(name[1:])

print(first_name)  # Ima
print(last_name)  # Coding Nubie

此代码首先将名称拆分为["Ima", "Coding", "Nubie"],然后通过列表切片将它们分成两个名称,并使用空格将它们连接起来。
有关.join()函数的更多信息,请参阅:https://www.w3schools.com/python/ref_string_join.asp

相关问题