合并 Pandas Dataframe 中两列的值,应用函数去重和连接

Merge the values of two columns in a Pandas Dataframe applying a function to deduplicate and concatenate

我是 pandas 的新手,但我还没有找到任何其他可以帮助我的问题。如果这是一个明显重复的问题,我很抱歉。

我有一个包含 2 列的 csv,如下所示:

phones1,phones2
0000,
,1111
2222#3333,3333#4444
5555#6666,777#8888

我想要的最终结果是合并操作,其中包含一些清理分隔符 (#) 和删除重复值的逻辑:

phones1,phones2,phones_merged
0000,,0000
,1111,1111
2222#3333,3333#4444,2222#3333#4444
5555#6666,777#8888,5555#6666#777#8888

我想我需要一个函数来处理这个逻辑,以确保只保留唯一值并以干净的方式添加分隔符 - 例如单个值不会像 #0000# 那样结束。

解决这个问题的最佳方法是什么?

我们可以在每一行上调用一个 func 并且 return 与 '#' 连接的唯一值:

In [18]:

def func(x):
    l = []
    r = []
    # handle NaN values
    if pd.notnull(x['phones1']):
        l = x['phones1'].split('#')    
    if pd.notnull(x['phones2']):
        r = x['phones2'].split('#')
    combined = set(l+r)
    return '#'.join(combined)

df['phones_merged'] = df.apply(lambda row: func(row), axis=1)
df
Out[18]:
     phones1    phones2       phones_merged
0       0000        NaN                0000
1        NaN       1111                1111
2  2222#3333  3333#4444      4444#2222#3333
3  5555#6666   777#8888  777#8888#6666#5555