Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.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_String_Concatenation - Fatal编程技术网

在Python中基于匹配列表连接两个矩阵?

在Python中基于匹配列表连接两个矩阵?,python,string,concatenation,Python,String,Concatenation,我想根据特定列中匹配的字符串值连接两个矩阵。例如,我正在尝试结合: 1 2 a 3.4 b 5.6 c 7.8天 及 13 14 c 15-16天 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天 注意,矩阵的排序方式不同,但我希望结果的排序方式与第一个类似 谢谢 这里没有矩阵,因为矩阵或数组(带有NumPy)通常只表示数字数据。此外,您希望合并数据,而不是连接数据。如果您愿意使用第三方库,则可以使用Pandas:

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

1 2 a
3.4 b
5.6 c
7.8天

13 14 c
15-16天
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天

注意,矩阵的排序方式不同,但我希望结果的排序方式与第一个类似


谢谢

这里没有矩阵,因为矩阵或数组(带有NumPy)通常只表示数字数据。此外,您希望合并数据,而不是连接数据。如果您愿意使用第三方库,则可以使用Pandas:

import pandas as pd

df1 = pd.DataFrame([[1, 2, 'a'], [3, 4, 'b'], [5, 6, 'c'], [7, 8, 'd']])
df2 = pd.DataFrame([[13, 14, 'c'], [15, 16, 'd'], [9, 10, 'a'], [11, 12, 'b']])

res = df1.merge(df2, on=2).values.tolist()

print(res)

[[1, 2, 'a', 9, 10],
 [3, 4, 'b', 11, 12],
 [5, 6, 'c', 13, 14],
 [7, 8, 'd', 15, 16]]
没有熊猫那么优雅(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

欢迎来到堆栈溢出。你能给我们看看你的一些代码,我们可以用它作为起点吗?您是否正在使用(嵌套的)列表、字符串、文件。。。?
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']]