如何在Pandas DataFrame中调整姓名格式并生成matchKey列
解决方案
可以通过Pandas的字符串处理能力快速实现需求,核心思路是拆分姓名、调整格式后重新拼接:
方法一:分步处理(清晰直观)
- 拆分姓氏与名字:按
,分割Name列,得到临时的姓氏列和名字列 - 调整姓氏大小写:将全大写的姓氏转换为每个单词首字母大写的格式
- 拼接生成
matchKey列:按「名字 + 空格 + 处理后的姓氏」顺序组合
import pandas as pd ds1 = {'Name':["CARO QUINTERO, Miguel Angel","CHANG, Ping Yun","GILBOA, Joseph"]} df1 = pd.DataFrame(data=ds1) # 拆分姓氏和名字 df1[['last_name', 'first_name']] = df1['Name'].str.split(', ', expand=True) # 调整姓氏大小写并拼接成目标列 df1['matchKey'] = df1['first_name'] + ' ' + df1['last_name'].str.title() # 可选:删除临时生成的拆分列 df1 = df1.drop(['last_name', 'first_name'], axis=1)
方法二:一行代码实现(简洁高效)
利用apply配合字符串操作直接完成转换,无需临时列:
import pandas as pd ds1 = {'Name':["CARO QUINTERO, Miguel Angel","CHANG, Ping Yun","GILBOA, Joseph"]} df1 = pd.DataFrame(data=ds1) df1['matchKey'] = df1['Name'].apply(lambda x: f"{x.split(', ')[1]} {x.split(', ')[0].title()}")
最终效果
处理后的DataFrame内容如下:
Name matchKey 0 CARO QUINTERO, Miguel Angel Miguel Angel Caro Quintero 1 CHANG, Ping Yun Ping Yun Chang 2 GILBOA, Joseph Joseph Gilboa
内容的提问来源于stack exchange,提问作者Giampaolo Levorato
相关产品推荐
相关产品推荐

