首页 > 解决方案 > Pandas - 连接分组行时忽略空值

问题描述

我正在尝试根据列值对数据框进行分组,并且我想连接(连接)其他列中的值。

我正在做类似的事情 -

df_combined = df_combined.groupby('UC').agg({'LO Number': ', '.join,
                                             'K Code': ', '.join})

但是,这给了我一些列没有值nan的值。K Code所以结果看起来像

K Code

K0016, K0068, nan, nan, A0046

nan, nan, nan

如何摆脱K Code列中的这些 nan 值?此外,有没有办法让第三列具有列中存在的值的数量K Code。例如。对于上述情况,

Count

3   

0

编辑:示例数据 -

UC      LO Number      K Code
C001     C001.1        K0068
C001     C001.2        K0372
C002     C002.1        
C002     C002.3        K0032
C002     C002.5          

谢谢!:)

标签: pythonpython-3.xpandasdataframe

解决方案


您可以尝试使用lambdawith agg,但这会创建多个索引

因为你 nannan在下面运行之前做替换

df=df.replace({'nan':np.nan})


df_combined.groupby('UC').agg({'LO Number': ', '.join,
                                             'K Code': [lambda x : ', '.join(y for y in x if y==y),'count']})

如果你不想要多重索引

df_combined.assign(count=df_combined['K Code']).
         groupby('UC').agg({'LO Number': ', '.join,
                           'K Code': lambda x : ', '.join(y for y in x if y==y),
                            'count':'count'})

推荐阅读