如何处理数据清理中的长名称?



我有一个用户数据库。我想把它们分成两列,分别有user1和user2。我解决这个问题的方法是把名字分成多列,然后合并成两列的用户。

我遇到的问题是一些名字很长,在分裂之后。这些名称占用了数据帧的一些位置,这使得正确合并变得更加困难。

Users
Maria Melinda Del Valle Justin Howard
小Devin Craig Jr. Michael Carter III
让娜·德·波尔多·阿尔哈姆迪

您可以使用:

def f(sr):
m = sr.isna().cumsum().loc[lambda x: x < 2]
return sr.dropna().groupby(m).apply(' '.join)
out = df.apply(f, axis=1).rename(columns=lambda x: f'User{x+1}')

输出:

>>> out
User1               User2
0  Maria Melinda Del Valle       Justin Howard
1          Devin Craig Jr.  Michael Carter III
2       Jeanne De Bordeaux             Alhamdi

正如@Barmar所建议的,如果你知道在第一个分割中放置空白列的位置,你应该知道如何创建这两个列。

最新更新