Если оба они очень большие, я бы использовал словарь:
arr1 = [
['2011-10-10', 1, 1],
['2007-08-09', 5, 3]
]
arr2 = [
['2011-10-10', 3, 4],
['2007-09-05', 1, 1]
]
table_1 = dict((tup[0], tup[1:]) for tup in arr1)
table_2 = dict((tup[0], tup[1:]) for tup in arr2)
merged = {}
for key, value in table_1.items():
other = table_2.get(key)
if other:
merged[key] = value + other
В противном случае было бы более удобно сортировать каждый, а затем делать слияние таким образом. Но я предполагаю, что для большинства целей это будет достаточно быстро.