合并 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
我是 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