首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >交叉连接/合并来创建组合的数据(顺序无关紧要)

交叉连接/合并来创建组合的数据(顺序无关紧要)
EN

Stack Overflow用户
提问于 2016-03-03 18:59:42
回答 1查看 283关注 0票数 0

我有一个有6个分类/字符串值的dataframe。我希望在顺序不重要(即a,b= b,a)的情况下,创建这些字符串值的所有可能组合的数据。

我做了以下工作,但我看到结果是一个排列,而不是一个组合,即它区分(IL,IL-1)和(IL-1,IL)。

我读了一遍:

http://pandas.pydata.org/pandas-docs/stable/merging.html#brief-primer-on-merge-methods-relational-algebra

在mysql中,我可以通过:

代码语言:javascript
复制
select r1.id, r2,id 
from rows r1 
cross join rows r2 
where r1.id < r2.id

谢谢你的帮助。

代码语言:javascript
复制
>data = ['IL', 'IL-1', 'IL-2', 'IL-3', 'IL-4', 'IL-5']
>df = pd.DataFrame(data)
>df['key1']= pd.Series([1] * len(df))
>df2 = df.copy()
>cart = pd.merge(df, df2, on='key1')

由此产生的数据文件:

代码语言:javascript
复制
0_x

key1

0_y

0
IL 1 IL 
1
IL 1 IL-1 
2
IL 1 IL-2 
3
IL 1 IL-3 
4
IL 1 IL-4 
5
IL 1 IL-5 
6
IL-1 1 IL 
7
IL-1 1 IL-1  
8
IL-1 1 IL-2    
9
IL-1 1 IL-3 
10
IL-1 1 IL-4   
11
IL-1 1 IL-5 
12
IL-2 1 IL 
13
IL-2 1 IL-1 
14
IL-2 1 IL-2 
15
IL-2 1 IL-3 
16
IL-2 1 IL-4 
17
IL-2 1 IL-5 
18
IL-3 1 IL 
19
IL-3 1 IL-1 
20
IL-3 1 IL-2 
21
IL-3 1 IL-3 
22
IL-3 1 IL-4 
23
IL-3 1 IL-5  
24
IL-4 1 IL 
25
IL-4 1 IL-1 
26
IL-4 1 IL-2 
27
IL-4 1 IL-3 
28
IL-4 1 IL-4 
29
IL-4 1 IL-5  
30
IL-5 1 IL 
31
IL-5 1 IL-1 
32
IL-5 1 IL-2 
33
IL-5 1 IL-3 
34
IL-5 1 IL-4 
35
IL-5 1 IL-5 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-03 23:27:57

将注释上的内容组合在一起,并使用建议的索引和一些虚拟数据创建一个15行(6C2) DataFrame

代码语言:javascript
复制
import itertools
import pandas as pd

labels = ['IL', 'IL-1', 'IL-2', 'IL-3', 'IL-4', 'IL-5']
i = pd.MultiIndex.from_tuples(list(itertools.combinations(labels, 2)))
df = pd.DataFrame({'col1':range(len(i))}, index=i)

输出:

代码语言:javascript
复制
           col1
IL   IL-1     0
     IL-2     1
     IL-3     2
     IL-4     3
     IL-5     4
IL-1 IL-2     5
     IL-3     6
     IL-4     7
     IL-5     8
IL-2 IL-3     9
     IL-4    10
     IL-5    11
IL-3 IL-4    12
     IL-5    13
IL-4 IL-5    14

如果您想要笛卡尔积的所有36个组合(我不认为是这样的):

代码语言:javascript
复制
i = pd.MultiIndex.from_product([labels, labels])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35780710

复制
相关文章

相似问题

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