gpt4 book ai didi

python - 连接多个 DataFrame 列并删除多个空格

转载 作者:行者123 更新时间:2023-12-01 01:40:19 26 4
gpt4 key购买 nike

我有一个 pandas DataFrame (20 x 1e6),其中有几个名称字段 ['PREFIX', 'FIRST_NAME', 'MIDDLE_NAME', 'LAST_NAME', 'SUFFIX'] 我正在尝试连接成一个字段,'FULLNAME'。名称字段通常在字符串的开头或结尾处有空格,而且许多记录的字段为空(例如 suffix = '')。

其他答案建议照常添加字段:

df['FULLNAME'] = df['PREFIX'].str.strip() + df['MIDDLE_NAME'].str.strip() + 
df['FIRST_NAME'].str.strip() + df['LAST_NAME'].str.strip() +
df['SUFFIX'].str.strip()

这里唯一的问题是,如果字段为空,我最终会在其位置上出现一个双空格。

我的(冗长的)解决方案如下:

df['FULLNAME'] =  df[['PREFIX', 'FIRST_NAME', 'MIDDLE_NAME', 'LAST_NAME', 
'SUFFIX']].apply(lambda x: ' '.join(' '.join([item.strip() for item in
x]).split()), axis = 1)

此解决方案有效,但由于我有超过一百万行,因此效率相对较低。我可以在这里进行更有效的操作吗?我想我可以像第一个示例一样添加字段,然后替换任何数字空格:

df['FULLNAME'] =  df['FULLNAME'].str.replace('  ', ' ')

但是,这可能不是一个包罗万象的解决方案,因为我不知道给定行中有多少名称字段可能为空。

最佳答案

使用 agg 聚合列会更容易,然后使用 str.replace 删除多余的内容即可。

name_cols = ['PREFIX', 'FIRST_NAME', 'MIDDLE_NAME', 'LAST_NAME', 'SUFFIX']
df['FULLNAME'] = df[name_cols].agg(' '.join, axis=1).str.replace('\s+', ' ')

关于python - 连接多个 DataFrame 列并删除多个空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51955228/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com