l | 客户号 | r1 | 客户号 | 存款 | r2 | 客户号 | 贷款 |
a | a | 5 | a | 2 | |||
b | d | 10 | b | 3 |
from functools import reduce
table_list=[l,r1,r2]
result = reduce(
lambda left,right:pd.merge(left,right,how='left',on='客户号'),table_list
)
reduce语法:reduce(function, sequence[, initial])
reduce原理 :在迭代sequence中,如tuple 、list 、dictionary、 string等可迭代物,把前两个元素传给 函数参数,加工后得到的结果和第三个元素作为两个参数再传给函数参数, 函数加工后得到的结果又和第四个元素作为两个参数传给函数参数,依次类推。 如果传入了 initial 值, 那么首先传的就不是 sequence 的第一个和第二个元素,而是 initial值和 第一个元素。经过这样的累计计算之后合并序列到一个单一返回值。