根据Python中的匹配列表连接两个矩阵?

时间:2018-09-25 15:48:25

标签: python string concatenation

我要根据特定列中匹配的字符串值来连接两个矩阵。例如,我正在尝试合并:

1 2 a
3 4 b
5 6 c
7 8 d

13 14 c
15 16 d
9 10 a
11 12 b

例如:

1 2 9 10 a
3 4 11 12 b
5 6 13 14 c
7 8 15 16 d

观察矩阵的排序方式不同,但我希望对结果的排序类似于第一个。

谢谢!

3 个答案:

答案 0 :(得分:2)

您那里没有矩阵,因为矩阵或数组(使用NumPy)通常仅指示数字数据。另外,您正在寻找合并数据而不是连接数据。如果您愿意使用第三方库,则可以使用Pandas:

   'type' => new PersonType(),

答案 1 :(得分:1)

l1 = [[1,2,'a'],[3,4,'b'],[5,6,'c'],[7,8,'d']]
l2 = [[13,14,'c'],[15,16,'d'],[9,10,'a'],[11,12,'b']]
l3 = sorted(l1, key=lambda x: x[2])
l4 = sorted(l2, key=lambda x: x[2])

l = list(zip(l3,l4))
z = [list(set(x + y)) for x, y in l]
[[1, 2, 9, 10, 'a'], [3, 4, 'b', 11, 12], [5, 6, 13, 14, 'c'], [7, 8, 15, 16, 'd']]

答案 2 :(得分:0)

不像Pandas优雅(jpp回答),而是另一种使用普通列表和字典的方式:

list_a=[[1,2,'a'],[3,4,'b'],[5,6,'c'],[7,8,'d']]
list_b=[[13,14,'c'],[15,16,'d'],[9,10,'a'],[11,12,'b']];
# ---------------------------------------
dict_result = {val[2]:val[0:2] for val in list_a}
for val in list_b:
    dict_result[val[2]].extend(val[0:2])
# -----------------------------------------
result=[];
for key,val in dict_result.iteritems():
    val.extend(key)
    result.append([valout for valout in val]);
# ------------------------------------------
print result