Python 通过基于某些条件连接其他两列在数据帧中创建新列

Python 通过基于某些条件连接其他两列在数据帧中创建新列,python,python-3.x,pandas,Python,Python 3.x,Pandas,我有一个如下所示的数据框(仅显示相关列): 我想在将col1和col2连接起来并使用“|”作为分隔符的基础上创建一个新列。应忽略NaN值 预期产出: col1 col2 new_col NaN NaN NaN NaN abc@123.com | pqr@234.com abc@123.com | pqr@234.com ppp@9

我有一个如下所示的数据框(仅显示相关列):

我想在将col1和col2连接起来并使用“|”作为分隔符的基础上创建一个新列。应忽略NaN值

预期产出:

col1          col2                          new_col
NaN           NaN                           NaN
NaN           abc@123.com | pqr@234.com     abc@123.com | pqr@234.com
ppp@987.com   NaN                           ppp@987.com
zzz@765.com   aaa@123.com | mmm@456.com     zzz@765.com | aaa@123.com | mmm@456.com

让我们试试堆叠

df['New']=df.stack().groupby(level=0).agg('|'.join)

df
          col1                     col2                                  New
0          NaN                      NaN                                  NaN
1          NaN  abc@123.com|pqr@234.com              abc@123.com|pqr@234.com
2  ppp@987.com                      NaN                          ppp@987.com
3  zzz@765.com  aaa@123.com|mmm@456.com  zzz@765.com|aaa@123.com|mmm@456.com
df['New']=df.stack().groupby(level=0).agg('|'.join)

df
          col1                     col2                                  New
0          NaN                      NaN                                  NaN
1          NaN  abc@123.com|pqr@234.com              abc@123.com|pqr@234.com
2  ppp@987.com                      NaN                          ppp@987.com
3  zzz@765.com  aaa@123.com|mmm@456.com  zzz@765.com|aaa@123.com|mmm@456.com