如何识别Pandas数据框中的全大写字符串并调整其位置?
调整Pandas列中姓名与姓氏的顺序
首先重现你的数据场景:
import pandas as pd ds = {"col1":["ROSSI Mauro", "Luca Giacomini", "Sonny Crockett"]} df = pd.DataFrame(data=ds)
当前输出:
print(df) col1 0 ROSSI Mauro 1 Luca Giacomini 2 Sonny Crockett
需求:识别col1中全大写的字符串(作为姓氏),将其移至非全大写字符串(作为名字)的后方,最终得到目标格式。
解决方案
可以通过自定义函数结合apply方法实现,逻辑清晰且适配单姓氏、多名字的场景:
def rearrange_full_name(name_str): # 将姓名拆分为独立部分 name_parts = name_str.split() # 分离姓氏(全大写)和名字(非全大写) last_name = [part for part in name_parts if part.isupper()] first_name = [part for part in name_parts if not part.isupper()] # 按「名字 + 姓氏」的顺序拼接 return ' '.join(first_name + last_name) # 应用函数到col1列 df['col1'] = df['col1'].apply(rearrange_full_name)
执行后输出结果:
print(df) col1 0 Mauro ROSSI 1 Luca Giacomini 2 Sonny Crockett
逻辑说明
split():将每个姓名按空格拆分成字符串列表isupper():判断字符串是否为全大写,以此区分姓氏和名字- 最后按「名字在前、姓氏在后」的顺序拼接,确保符合需求格式
内容的提问来源于stack exchange,提问作者Giampaolo Levorato
相关产品推荐
相关产品推荐

