大熊猫合并两列被视为“集合”

问题描述 投票:0回答:1

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

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

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

  A B C1 C2
0 a b 1  3
2 c c 1  Nan
3 d a 5  Nan
python pandas
1个回答
3
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.