gpt4 book ai didi

python-3.x - 将 df 中的所有列与 Pandas 结合(itertools)

转载 作者:行者123 更新时间:2023-12-04 08:27:10 25 4
gpt4 key购买 nike

您好,我有一个 df,例如:

COL1 COL2 COL3 COL4 
A B C D
我怎样才能得到一个包含列之间所有组合的 nex df?
并得到
COL1_COL2 COL1_COL3 COL1_COL4 COL2_COL3 COL2_COL4 COL3_COL4 
['A','B']['A','C'] ['A','D'] ['B','C'] ['B','D'] ['C','D']
我猜我们可以使用 itertool 吗?

最佳答案

确实,itertools 在这里很有用

from itertools import combinations
columns = [df[c] for c in df.columns]

column_pairs = ([pd.DataFrame(
columns = [pair[0].name + '_' + pair[1].name],
data= pd.concat([pair[0],pair[1]],axis=1)
.apply(list,axis=1))
for pair in combinations(columns, 2)]
)

pd.concat(column_pairs, axis = 1)
产生
    COL1_COL2    COL1_COL3    COL1_COL4    COL2_COL3    COL2_COL4    COL3_COL4
-- ----------- ----------- ----------- ----------- ----------- -----------
0 ['A', 'B'] ['A', 'C'] ['A', 'D'] ['B', 'C'] ['B', 'D'] ['C', 'D']
1 ['a', 'b'] ['a', 'c'] ['a', 'd'] ['b', 'c'] ['b', 'd'] ['c', 'd']
(我用 a、b、c、d 向原始 df 添加了另一行,以确保它在这种稍微更一般的情况下工作)
代码相当简单。 columns是一个列列表,每个列都是 pd.Series , 原始数据帧。 combinations(columns, 2)枚举所有这些对。 pd.DataFrame(columns = [pair[0].name + '_' + pair[1].name], data= pd.concat([pair[0],pair[1]],axis=1).apply(list,axis=1))组合元组中的第一列和第二列 pair将名称和值组合到一个单列 df 中。最后 pd.concat(column_pairs, axis = 1)将它们组合在一起

关于python-3.x - 将 df 中的所有列与 Pandas 结合(itertools),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65206420/

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