首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对列使用itertools.combinations

对列使用itertools.combinations
EN

Stack Overflow用户
提问于 2016-05-31 01:45:44
回答 1查看 1.6K关注 0票数 0

我有一个有3列的Dataframe df。A、B和C

代码语言:javascript
复制
A B C
2 4 4
5 2 5
6 9 5 

我的目标是使用itertools.combinations查找所有不重复的列对,并将第一列对放入一个DataFrame中,将第二列对放入另一列中。所以所有的对都会得到A:B,A:C,B:C。

因此,第一个数据帧df1将具有这些列对中的第一个:

代码语言:javascript
复制
df=A A B
   2 4 4
   5 5 2
   6 5 9

第二个df2:

代码语言:javascript
复制
   B C C
   4 4 4
   3 5 5
   9 5 5

我正在尝试使用itertools做一些事情,比如:

代码语言:javascript
复制
    for cola, colb in itertools.combinations(df, 2):
        df1[cola]=cola
        df2[colb]=colb

我知道这没有任何意义,但我可以将每一列更改为一个列表,然后迭代一个列表列表,然后将每个列表附加到一个列表A和B,然后将该列表转换回一个Dataframe,但是这样我就缺少了头。我尝试将头文件添加到列表中,但当我尝试将其重做回DataFrame时,索引似乎关闭了,我似乎无法修复它。所以我只是想看看是否有一种方法可以使用标题来迭代处理整个列。

EN

回答 1

Stack Overflow用户

发布于 2016-05-31 07:45:59

使用zip函数对要在每个DataFrame中单独使用的列进行分组,然后使用pandas.concat构造新的DataFrames:

代码语言:javascript
复制
from itertools import combinations

df1_cols, df2_cols = zip(*combinations(df.columns,2))

df1 = pd.concat([df[col] for col in df1_cols],axis=1)
df2 = pd.concat([df[col] for col in df2_cols],axis=1)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37531215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档