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]
我希望这能有所帮助。祝你好运 您能提供您试图解决问题的实际代码吗?请包含阵列的原始数据结构,以便我们在尝试帮助您时可以对其进行初始化。您能否提供您试图解决问题的实际代码?请包含阵列的原始数据结构,以便我们在尝试帮助您时可以对其进行初始化。