我正在尝试重新排列数据帧列中的字符串,但是并非所有条目都需要重新排列。例如,我希望以下数据框中的每个名称都按照“名字姓氏”的顺序排列。一些名称已经采用这种格式(例如Jim Beam),另一些则没有(例如带有逗号的名称),而有些名称只有一个名称(例如Plague)。
class_list = pd.DataFrame({'names':['Chinit, Janine', 'Plague', 'Leggit, Marjorie', 'Jim Beam']})
我可以使用以下内容成功地用逗号重新排列名称,但是在此过程中会丢失单个名称或不需要重新排列的名称。
name_list = class_list.names
names = name_list.str.split(',', expand = True)
names_fixed = names[1] + ' ' + names[0]
names_fixed
如何在上面添加条件语句以仅重新排列带有逗号的名称?这就是我想要的输出:
names_fixed = pd.DataFrame({'names':['Janine Chinit', 'Plague', 'Marjorie Leggit', 'Jim Beam']})
在我的实际用例中,我有30万条记录需要这种处理,因此需要一种计算有效的解决方案。
预先感谢, -拉姆斯
答案 0 :(得分:0)
class_list['names_fixed'] = class_list.names.apply(lambda x: x.split(",")[1] + " " + x.split(",")[0] if "," in x else x)
在条件为lambda
的情况下应用if "," in x
函数,然后在x.split
和separator
','
的情况下应用list
和concatenating
[1]
的{{1}}和[0]
元素,其中list
和" "
仅采用else
更多x
,请检查此链接[https://pandas.pydata.org/pandas-docs/version/0.18/generated/pandas.Series.apply.html][1]