为了账号安全,请及时绑定邮箱和手机立即绑定

Pandas 表中的外连接

Pandas 表中的外连接

慕神8447489 2021-11-30 18:34:50
我有一个包含三个字符串列的 PANDAS 数据框,如下所示:Name     Surname    MiddleNameJames    Bond       AMaggie   Sweenie    B我想在表中创建一种外连接,以便输出 Name、Surname 和 MiddleName 的所有可能组合。我正在寻找的输出是:Name     Surname    MiddleNameJames    Bond       AMaggie   Sweenie    BJames    Sweenie    AJames    Sweenie    BMaggie   Bond       AMaggie   Bond       B任何想法最有效的方法是什么?
查看完整描述

3 回答

?
烙印99

TA贡献1829条经验 获得超13个赞

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


查看完整回答
反对 回复 2021-11-30
?
精慕HU

TA贡献1845条经验 获得超8个赞

您正在寻找一种expand_grid可以使用itertools.product(). 从pandas 文档中,您可以定义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 


查看完整回答
反对 回复 2021-11-30
?
偶然的你

TA贡献1841条经验 获得超3个赞

没有迭代工具:

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


查看完整回答
反对 回复 2021-11-30
  • 3 回答
  • 0 关注
  • 225 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信