我正在尝试根据列值对数据框进行分组,并且我想将其他列中的值进行串联(联接)。
我正在做-
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
谢谢! :)
答案 0 :(得分:0)
您可以尝试将lambda
与agg
一起使用,但这会创建多重索引
由于您的名字是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'})