首页 > 解决方案 > 大熊猫合并两列被视为“集合”

问题描述

我试图在 pandas 中找到一种简单的方法来合并行,我们将一组列视为集合。例如A,B是一个集合。

  A B C
0 a b 1
1 b a 3
2 c c 1
3 d a 5

所以我想合并 on=[A,B] 给我:

  A B C1 C2
0 a b 1  3
2 c c 1  Nan
3 d a 5  Nan

标签: pythonpandas

解决方案


IIUC,你可以使用

np.sort+groupby

d = pd.DataFrame(np.sort(df[['A', 'B']].values,1))
     
df.groupby((d!=d.shift()).cumsum().sum(1)).C.agg(list).apply(pd.Series)

    0   1
2   1.0 3.0
4   1.0 NaN
6   5.0 NaN

或者

frozenset+apply

df.groupby(df[['A', 'B']].apply(frozenset,1)).C.agg(list).apply(pd.Series)


        0   1
(a, b)  1.0 3.0
(c)     1.0 NaN
(a, d)  5.0 NaN

推荐阅读