合并并合并2列不同的数据框

Cat*_*taa 4 python dataframe python-3.x pandas

我有2个数据框:

ID             word
1              srv1
2              srv2
3              srv1
4              nan
5              srv3
6              srv1
7              srv5
8              nan
Run Code Online (Sandbox Code Playgroud)
ID             word
1              nan
2              srv12
3              srv10
4              srv8
5              srv4
6              srv7
7              nan
8              srv9
Run Code Online (Sandbox Code Playgroud)

我需要的是将ID上的那两个数据帧合并,并合并列字以获得:

ID             word
1              srv1 
2              srv2 , srv12
3              srv1 , srv10
4              srv8
5              srv3 , srv4
6              srv1 , srv7
7              srv5
8              srv9
Run Code Online (Sandbox Code Playgroud)

用下面的代码

ID             word
1              srv1
2              srv2
3              srv1
4              nan
5              srv3
6              srv1
7              srv5
8              nan
Run Code Online (Sandbox Code Playgroud)

我正进入(状态:

ID             word
1              nan 
2              srv2 , srv12
3              srv1 , srv10
4              nan
5              srv3 , srv4
6              srv1 , srv7
7              nan
8              nan
Run Code Online (Sandbox Code Playgroud)

这不是正确的解决方案。

Bre*_*dan 5

即使使用中的源列之一,也可以使用Series.str.catna_rep选项填充wordnan,然后使用str.strip修剪' , '字词之间的前导/后缀。

m['word'] = m['word_x'].str.cat(m['word_y'], sep=' , ', na_rep='').str.strip(' , ')
Run Code Online (Sandbox Code Playgroud)

退货

   ID word_x word_y          word
0   1   srv1    NaN          srv1
1   2   srv2  srv12  srv2 , srv12
2   3   srv1  srv10  srv1 , srv10
3   4    NaN   srv8          srv8
4   5   srv3   srv4   srv3 , srv4
5   6   srv1   srv7   srv1 , srv7
6   7   srv5    NaN          srv5
7   8    NaN   srv9          srv9
Run Code Online (Sandbox Code Playgroud)