首页 > 解决方案 > 如何在熊猫数据框中创建一个逗号分隔列表作为新列

问题描述

我有如下数据框(df)。

如果有的话,我也想跳过空值。

输入

 A            B              C   
a@gmail.com   y@yahoo.com    g@mail.com
b@gmail.com
c@gmail.com   g@gmail.com    d@gmail.com
d@gmail.com                  t@gmail.com
               r@gmail.com   y@gmail.com

输出

 A            B              C             Merged
a@gmail.com   y@yahoo.com    g@mail.com    a@gmail.com,y@yahoo.com,g@mail.com
b@gmail.com                                b@gmail.com
c@gmail.com   g@gmail.com    d@gmail.com   c@gmail.com,g@gmail.com,d@gmail.com
d@gmail.com                  t@gmail.com   d@gmail.com,t@gmail.com
               r@gmail.com   y@gmail.com   r@gmail.com,y@gmail.com

如何使用熊猫来做到这一点?

标签: pythonpandasdataframe

解决方案


使用(更新以处理 '' vs NaN):

df.replace('', np.nan).apply(lambda x: x.str.cat(sep=', '), axis=1)

输出:

0     a@gmail.com, y@yahoo.com, g@mail.com
1                              b@gmail.com
2    c@gmail.com, g@gmail.com, d@gmail.com
3                 d@gmail.com, t@gmail.com
4                 r@gmail.com, y@gmail.com
dtype: object

喜欢,

df['merged'] = df.replace('', np.nan).apply(lambda x: x.str.cat(sep=', '), axis=1)

输出:

             A            B            C                                 merged
0  a@gmail.com  y@yahoo.com   g@mail.com   a@gmail.com, y@yahoo.com, g@mail.com
1  b@gmail.com          NaN          NaN                            b@gmail.com
2  c@gmail.com  g@gmail.com  d@gmail.com  c@gmail.com, g@gmail.com, d@gmail.com
3  d@gmail.com          NaN  t@gmail.com               d@gmail.com, t@gmail.com
4          NaN  r@gmail.com  y@gmail.com               r@gmail.com, y@gmail.com

推荐阅读