gpt4 book ai didi

python - Pandas :所有可能的行组合

转载 作者:行者123 更新时间:2023-11-28 17:04:12 26 4
gpt4 key购买 nike

我有一个 DataFrame 看起来像..

ID   c1   c2   cX
r1 2 3 ..
r2 8 9 ..
rY ..

我想生成一个包含所有可能的(两部分)行组合的新 DataFrame,同时连接两个组合行的列(这样新的 DF 将有两倍的列)。结果应如下所示:

ID       c1_r1   c1_r2   c2_r1   c2_r2   cX_rA
r1_r2 2 8 3 9 ..
r1_r3 .. .. .. ..
rA_rB ..

ID 名称并不重要(它甚至可以是一个 MultiIndex),列的顺序也不重要。

如何解决这个问题?

最佳答案

考虑df

    c1  c2
ID
r1 2 3
r2 8 9
r3 0 7

我会这样做

from itertools import combinations

a, b = map(list, zip(*combinations(df.index, 2)))

print(a, b, sep='\n')

['r1', 'r1', 'r2']
['r2', 'r3', 'r3']

然后使用pd.concat

d = pd.concat(
[df.loc[a].reset_index(), df.loc[b].reset_index()],
keys=['a', 'b'], axis=1
)

d

a b
ID c1 c2 ID c1 c2
0 r1 2 3 r2 8 9
1 r1 2 3 r3 0 7
2 r2 8 9 r3 0 7

最后,收尾

d.set_index([('a', 'ID'), ('b', 'ID')]).rename_axis(['a', 'b'])

a b
c1 c2 c1 c2
a b
r1 r2 2 3 8 9
r3 2 3 0 7
r2 r3 8 9 0 7

关于python - Pandas :所有可能的行组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52227213/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com