我有以下数据帧
df1:
playerA playerB PlayerC PlayerD
kim lee b f
jackson kim d g
dan lee a d
我想用两列的所有可能组合生成一个新的数据帧。比如说,
df_new:
Target Source
kim lee
kim kim
kim lee
kim b
kim d
kim a
kim f
kim g
kim d
jackson lee
jackson kim
jackson lee
jackson b
.
.
.
.
lee kim
lee jackson
lee dan
lee b
lee d
.
.
.
因此,我尝试了这个代码t
import itertools
def comb(df1):
return [df1.loc[:, list(x)].set_axis(['Target','Source'], axis=1)
for x in itertools.combinations(df1.columns, 2)]
但是,它仅显示同一行中列之间的组合
是否有任何方法可以生成列之间所有可能的组合?提前谢谢
从} 、^{} 和^{} 的一种方式:
itertools
到^{我们首先得到所有列的2-
permutations
,然后对于每一对,形成它们的值的product
。对所有置换执行此操作后,使用chain.from_iterable
将它们展平,并传递给数据帧构造函数我得到一个108 x 2的数据帧:
(其中108=3*9*4:3=行,9=行*其他列,4=总列)
这里有一个使用^{} 和^{} 的方法
此方法不考虑^ {< CD3>}和^ {CD4>}的相同索引,但可以使用以下简单的数学方法轻松地删除这些行:
您可以使用列表理解
相关问题 更多 >
编程相关推荐