我正在尝试对某些熊猫DataFrame进行重复数据删除,并且我有一个功能可以成对执行(即一次两个df)。我想编写另一个函数,该函数采用任意长度的DataFrames列表,并合并列表中的前两个元素,然后将结果与列表中的第三个元素合并,直到到达列表的末尾。
为简单起见,我将假定重复数据删除功能只是字符串连接。
我尝试了一些递归函数,但这不太正确。
def dedupe_recursive(input_list):
if input_list == []:
return
else:
for i in range(0, len(input_list)-1):
new_list = input_list[i+1:]
deduped = dedupe(new_list[i], new_list[i+1])
print(deduped, new_list)
return dedupe_recursive(new_list)
输入(列表):['a', 'b', 'c', 'd']
输出(列表列表):[['ab'], ['ab', 'c'], ['abc', 'd']]
答案 0 :(得分:4)
有一种函数可以用于这类事情,称为reduce
。您将这样使用它:
from functools import reduce
final_df = reduce(dedupe, list_of_dataframes)