首页 > 解决方案 > 使用 pandas 联合列值分组

问题描述

我有一个以下数据集。

colA ColB ColC
a      1   aa
a      1   Nan
a      2
a      2    bb
a      2    cc

我想要一个输出如下

colA ColB ColC
a      1   aa
a      2   bb#cc

我正在尝试按 ColA 和 ColB 以及联合 ColC 值进行分组。我尝试在 Pandas 中使用以下代码。但我没有得到

test1 = test(['colA','colB'])['colC'].apply(lambda x: x.sum() )

它必须避免在列中出现 Nan 或空格,并使用 # 分隔符连接所有值。

标签: pythonpandas

解决方案


1st replaceall Nan和blank to np.nan,然后dropna,问题就变得简单了groupby agg join

df=df.replace({'Nan':np.nan,' ':np.nan})
df.dropna().groupby(['colA','ColB'],as_index=False).ColC.agg(','.join)
  colA  ColB   ColC
0    a     1     aa
1    a     2  bb,cc

推荐阅读