python合并未排序的数组(不完整)

python合并未排序的数组(不完整),python,arrays,dictionary,merge,Python,Arrays,Dictionary,Merge,我有三个阵列: ID, Name, F1, 1, John, 21 5, Peter, 29 4, Don, 50 ID, F2 1, 40 5, 22 Name, F3 Don, 30 Peter, 66 我想把它们组合成一个数组: ID, Name, F1, F2, F3 1, John, 21, 40, NaN 5, Peter, 29, 22, 66 4, Don, 50, NaN, 50 如何在Python中实现这一点? 我试着用字典,但没有成功 代码: 创建字典: ID =

我有三个阵列:

ID, Name, F1,
1, John, 21
5, Peter, 29
4, Don, 50

ID, F2
1, 40
5, 22

Name, F3
Don, 30
Peter, 66
我想把它们组合成一个数组:

ID, Name, F1, F2, F3
1, John, 21, 40, NaN
5, Peter, 29, 22, 66
4, Don, 50, NaN, 50
如何在Python中实现这一点? 我试着用字典,但没有成功

代码:

创建字典:

ID = A[:,0]
Name = A[:,1]
zipbObj = zip(ID, Name)
dictIDName = dict(zipbObj)
但是现在我不知道如何以一般方式查看数组B、C。

使用:

每例

df1 = pd.DataFrame({'ID': [1,5,4],
                    'Name': ['John', 'Peter', 'Don'],
                    'F1': [21, 29, 50]})
df2 = pd.DataFrame({'ID': [1,5],
                    'F2': [40, 22]})
df3 = pd.DataFrame({'Name': ['Don', 'Peter'],
                    'F3': [30,66]})

print(pd.merge_ordered(pd.merge_ordered(df1, df2), df3))
结果:

   ID   Name  F1    F2    F3
0   4    Don  50   NaN  30.0
1   1   John  21  40.0   NaN
2   5  Peter  29  22.0  66.0
使用:

每例

df1 = pd.DataFrame({'ID': [1,5,4],
                    'Name': ['John', 'Peter', 'Don'],
                    'F1': [21, 29, 50]})
df2 = pd.DataFrame({'ID': [1,5],
                    'F2': [40, 22]})
df3 = pd.DataFrame({'Name': ['Don', 'Peter'],
                    'F3': [30,66]})

print(pd.merge_ordered(pd.merge_ordered(df1, df2), df3))
结果:

   ID   Name  F1    F2    F3
0   4    Don  50   NaN  30.0
1   1   John  21  40.0   NaN
2   5  Peter  29  22.0  66.0

集合可用于执行数学集合运算,如并集、交集、差集和对称差集。也许本教程会有所帮助

集合可用于执行并集、交集、差分和对称差分等数学集合运算。也许本教程会有所帮助

我准备了一个小函数,可以做到这一点:

#ID,Name,F1
arr1=[[1,'Jhon',21],[5,'Peter',29],[4,'Don',29]]
#ID,F2
arr2=[[1,40],[5,22]]
#Name,F3    
arr3=[['Don',30],['Peter',66]]

def merge_arrs(a1,a2,a3):
    res=[]
    dim=len(arr1)
    for i in range(0,dim):
        res.append([a1[i][0],a1[i][1],a1[i][2],None,None])

    for i in range(0,len(a2)):
        idx=-1
        for j in range(0,dim):
            try:
                a1[j].index(a2[i][0])
                idx=j
                break
            except ValueError as ve:
                continue
            if(idx>=0):
                res[idx][3]=a2[i][1]

    for i in range(0,len(a3)):
        idx=-1
        for j in range(0,dim):
            try:
                a1[j].index(a3[i][0])
                idx=j
                break
            except ValueError as ve:
                continue
            if(idx>=0):
                res[idx][4]=a2[i][1]


    return res

print(merge_arrs(arr1,arr2,arr3))
结果是:
[[1,'Jhon',21,40,无],[5,'Peter',29,22,22],[4,'Don',29,无,40]


我希望这能有所帮助。祝你好运

我准备了一个小函数,可以做到这一点:

#ID,Name,F1
arr1=[[1,'Jhon',21],[5,'Peter',29],[4,'Don',29]]
#ID,F2
arr2=[[1,40],[5,22]]
#Name,F3    
arr3=[['Don',30],['Peter',66]]

def merge_arrs(a1,a2,a3):
    res=[]
    dim=len(arr1)
    for i in range(0,dim):
        res.append([a1[i][0],a1[i][1],a1[i][2],None,None])

    for i in range(0,len(a2)):
        idx=-1
        for j in range(0,dim):
            try:
                a1[j].index(a2[i][0])
                idx=j
                break
            except ValueError as ve:
                continue
            if(idx>=0):
                res[idx][3]=a2[i][1]

    for i in range(0,len(a3)):
        idx=-1
        for j in range(0,dim):
            try:
                a1[j].index(a3[i][0])
                idx=j
                break
            except ValueError as ve:
                continue
            if(idx>=0):
                res[idx][4]=a2[i][1]


    return res

print(merge_arrs(arr1,arr2,arr3))
结果是:
[[1,'Jhon',21,40,无],[5,'Peter',29,22,22],[4,'Don',29,无,40]


我希望这能有所帮助。祝你好运

您能提供您试图解决问题的实际代码吗?请包含阵列的原始数据结构,以便我们在尝试帮助您时可以对其进行初始化。您能否提供您试图解决问题的实际代码?请包含阵列的原始数据结构,以便我们在尝试帮助您时可以对其进行初始化。