熊猫-串联分组的行时忽略空值

时间:2019-03-18 03:38:57

标签: python python-3.x pandas dataframe

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

我正在做-

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          

谢谢! :)

1 个答案:

答案 0 :(得分:0)

您可以尝试将lambdaagg一起使用,但这会创建多重索引

由于您的名字是nan,因此请先替换掉

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'})