带有熊猫数据框的内连接循环,用于可能存在或不存在的各种组合[重复]
Posted
技术标签:
【中文标题】带有熊猫数据框的内连接循环,用于可能存在或不存在的各种组合[重复]【英文标题】:Inner Join loop with pandas data frames for various combinations that may or not be present [duplicate] 【发布时间】:2017-11-22 06:03:57 【问题描述】:当我的会话中出现多个数据帧的各种组合时,我需要一种智能方法来将它们连接在一起。通过连接完成事情的顺序无关紧要。
在这个简单的例子中,我有 4 个数据框,每个组合在我的环境中可能存在也可能不存在。
例如,每个逗号分隔引用代表 df1、df2、df3、df4 的数据帧。如果有帮助,我的数据框将始终使用这种类似的拼写。
我的数据框将始终加入数据框中的“ID”字段。
示例场景设置(记住有很多排列方式):
df1 = pd.DataFrame('ID': ['jack', 'mary', 'jill'], 'Score1': [1,2,3])
df3 = pd.DataFrame('ID': ['jack', 'mary','katy'], 'Score3': [111,222,333]
df4 = pd.DataFrame('ID': ['jack', 'mary','katy'], 'Score4': [1111,2222,3333]
下次我可以只拥有 df1 和 df4...等 如何设置数据帧的进一步示例:
存在,存在,存在,存在 不,不,不,存在 不,不,存在,存在 不,存在,存在,存在 等....我相信是4! ×3!组合?总会有至少一个数据框导致不会尝试连接正在寻找的解决方案:
df_final = df1.merge(.....) 用于可能存在或不存在的 df#s 的所有组合
【问题讨论】:
【参考方案1】:IIUC:
l = [df1,df3,df4]
pd.concat([i.set_index('ID') for i in l], axis=1)
输出:
Score1 Score3 Score4
jack 1.0 111.0 1111.0
jill 3.0 NaN NaN
katy NaN 333.0 3333.0
mary 2.0 222.0 2222.0
或如 EFT 建议的那样:
print(pd.concat([i.set_index('ID') for i in l], axis=1, join='inner'))
输出:
Score1 Score3 Score4
ID
jack 1 111 1111
mary 2 222 2222
【讨论】:
要获得内部连接,只需在此答案中将参数join='inner'
添加到pd.concat
。以上是关于带有熊猫数据框的内连接循环,用于可能存在或不存在的各种组合[重复]的主要内容,如果未能解决你的问题,请参考以下文章