python - 如何递归组合列表中的元素对?
问题描述
我正在尝试对一些 pandas DataFrames 进行重复数据删除,并且我有一个可以成对执行此操作的函数(即一次两个 dfs)。我想编写另一个函数,它采用任意长度的 DataFrame 列表并组合列表中的前两个元素,然后将结果与列表中的第三个元素组合,直到我们到达列表的末尾。
为简单起见,我假设我的重复数据删除功能只是字符串连接。
我尝试了一些递归函数,但它并不完全正确。
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']]
解决方案
正是这种事情有一个函数,它被称为reduce
. 你会像这样使用它:
from functools import reduce
final_df = reduce(dedupe, list_of_dataframes)
推荐阅读
- java - HTML单元
- angular - Angular 7 Routing - 如何确保所有路由都带有 :gymId 参数
- c# - 以编程方式更改列表视图项中的 textColor
- r - R:以好看的方式一一打印数据帧行
- xml - 为什么 DTD 的验证在元素类型“发票”的声明中给我错误“A')' 是必需的?
- typescript - 在同一对象的另一个属性中使用推断的属性类型
- css - 如何在反应js中使用flex在每个角落排列两个按钮
- java - 使用 AffineTransform Java 旋转图像时出现偏移错误
- django - 在 Django 中运行迁移命令时出现编程错误
- php - 使用 PHP/GD 生成带有“镀金”文字效果的图像