reduce() 函数在 python 2 是内置函数, 从python 3 开始移到了 functools 模块。
reduce 有三个参数:
参数 | 含义 |
---|---|
function | 有两个参数的函数, 必需参数 |
sequence | tuple ,list ,dictionary, string等可迭代物,必需参数 |
initial | 初始值, 可选参数 |
reduce的工作过程是 :
在迭代sequence(tuple ,list ,dictionary, string等可迭代物)的过程中,首先把 前两个元素传给 函数参数,函数加工后,然后把得到的结果和第三个元素作为两个参数传给函数参数, 函数加工后得到的结果又和第四个元素作为两个参数传给函数参数,依次类推。 如果传入了 initial 值, 那么首先传的就不是 sequence 的第一个和第二个元素,而是 initial值和 第一个元素。经过这样的累计计算之后合并序列到一个单一返回值。
举例:
将多个表格横向拼接在一起
import pandas as pd
import numpy as np
temp = []
for each in range(3):
x = pd.DataFrame(np.random.randint(0,10,(4,2)),columns=['a','b'])
x['on']=[100,200,300,400]
x = x[['on','a','b']]
temp.append(x)
for each in temp:
display(each)
from functools import reduce
result = reduce(lambda x,y: pd.merge(x,y,how='outer',on=['on']), temp)
result