选项卡内的外部联接

2024-09-27 23:18:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有三个字符串列的数据框,看起来像这样:

Name     Surname    MiddleName
James    Bond       A
Maggie   Sweenie    B

我想在表中创建一种外部连接,以便输出Name、姓氏和MiddleName的所有可能组合。我想要的输出是:

Name     Surname    MiddleName
James    Bond       A
Maggie   Sweenie    B
James    Sweenie    A
James    Sweenie    B
Maggie   Bond       A
Maggie   Bond       B

你知道最有效的方法是什么吗?你知道吗


Tags: 数据方法字符串namesurname姓氏bondjames
3条回答

没有itertools:

pd.MultiIndex.from_product(df.T.values.tolist()).to_frame(index=False)

IIUC使用product

import itertools 
yourdf=pd.DataFrame(list(itertools.product(*df.values.T.tolist())),columns=df.columns)
yourdf
Out[937]: 
     Name  Surname MiddleName
0   James     Bond          A
1   James     Bond          B
2   James  Sweenie          A
3   James  Sweenie          B
4  Maggie     Bond          A
5  Maggie     Bond          B
6  Maggie  Sweenie          A
7  Maggie  Sweenie          B

您正在寻找一种expand_grid功能,它可以用itertools.product()实现。从pandas documentation,您可以定义expand_grid

import itertools

def expand_grid(data_dict):
     rows = itertools.product(*data_dict.values())
     return pd.DataFrame.from_records(rows, columns=data_dict.keys())

expand_grid(df.to_dict('list'))  
Out[38]: 
     Name  Surname MidName
0   James     Bond       A
1   James     Bond       B
2   James  Sweenie       A
3   James  Sweenie       B
4  Maggie     Bond       A
5  Maggie     Bond       B
6  Maggie  Sweenie       A
7  Maggie  Sweenie       B 

相关问题 更多 >

    热门问题