Pandas合并两列且保留行内唯一值、自动去重的实现问题
首先给出测试数据构造代码:
import pandas as pd df = pd.DataFrame({ 'foodstuff':['apple-martini', 'apple-pie', None, 'dessert', None], 'type':[None, None, 'strawberry-tart', 'dessert', None] })
方法1:最高效实现(适配需求场景)
优先取foodstuff列的非空值,若为空则取type列值,两列值重复时会自动保留一个,无需额外去重操作,性能远高于行遍历方案:
df['Combined'] = df['foodstuff'].fillna(df['type']) # 仅保留Combined列的话可以加这行 df = df[['Combined']]
方法2:通用多列合并方案
如果后续需要合并更多列,且要自动对行内非空重复值去重,可以用以下写法:
df['Combined'] = df.apply( lambda row: next(iter(set(row.dropna())), None), axis=1 )
运行后得到的结果如下:
Combined 0 apple-martini 1 apple-pie 2 strawberry-tart 3 dessert 4 None
内容的提问来源于stack exchange,提问作者Zanam
相关产品推荐
相关产品推荐

