Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 带熊猫数据帧的内部连接循环,用于各种可能存在或不存在的组合_Python_Loops_Pandas_Merge - Fatal编程技术网

Python 带熊猫数据帧的内部连接循环,用于各种可能存在或不存在的组合

Python 带熊猫数据帧的内部连接循环,用于各种可能存在或不存在的组合,python,loops,pandas,merge,Python,Loops,Pandas,Merge,当会话中存在多个数据帧的各种组合时,我需要一种智能的方式将多个数据帧连接在一起。通过连接完成事情的顺序并不重要 在这个简单的示例中,我有4个数据帧,每个数据帧的组合在我的环境中可能存在,也可能不存在 例如,每个逗号分隔表示代表df1、df2、df3、df4的数据帧。如果有帮助的话,我的数据帧总是有类似的拼写 我的数据帧将始终连接到数据帧中的“ID”字段 示例场景设置(请记住,这有许多排列): 下一次我就可以用df1和df4…等等 如何设置数据帧的进一步示例: 存在,存在,存在,存在 不,不,不

当会话中存在多个数据帧的各种组合时,我需要一种智能的方式将多个数据帧连接在一起。通过连接完成事情的顺序并不重要

在这个简单的示例中,我有4个数据帧,每个数据帧的组合在我的环境中可能存在,也可能不存在

例如,每个逗号分隔表示代表df1、df2、df3、df4的数据帧。如果有帮助的话,我的数据帧总是有类似的拼写

我的数据帧将始终连接到数据帧中的“ID”字段

示例场景设置(请记住,这有许多排列):

下一次我就可以用df1和df4…等等 如何设置数据帧的进一步示例:

  • 存在,存在,存在,存在
  • 不,不,不,存在
  • 不,不,存在,存在
  • 不,存在,存在,存在
  • 等等。。。。我相信是4!x3!组合?将始终至少有一个数据帧,在该数据帧中不会尝试任何联接
解决方案正在寻找:

df_final=df1。对于可能存在或可能不存在的所有df#组合,合并(…)

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
      Score1  Score3  Score4
ID                          
jack       1     111    1111
mary       2     222    2222
或者正如EFT所建议的:

print(pd.concat([i.set_index('ID') for i in l], axis=1, join='inner'))
输出:

      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
      Score1  Score3  Score4
ID                          
jack       1     111    1111
mary       2     222    2222

要获得一个内部连接,只需将参数
join='internal'
添加到这个答案中的
pd.concat