首页 > 解决方案 > python:继续迭代,直到满足某个条件

问题描述

我有一个类似以下的项目:

my_project:
  |__my_new_data
  |      |__new_data.csv
  |
  |__my_original_data
  |      |__original_data.csv
  |__process.py
  |
  |__read.py

我的 read.py 中有一个函数,它应该从项目中的数据目录中读取数据,将它们连接为 panda 数据帧,然后在我的 process.py 中导入最终数据帧以处理数据并替换 new_data.csv 文件在 my_new_data_directory

from typing import Final

def iteration():
    data= []
    my_new_data = pd.read_csv((os.path.join(my_new_data, 'new_data.csv')))
    my_original_data = pd.read_csv((os.path.join(my_original_data, 'original_data.csv'))) 
    all_data = pd.concat([my_new_data, my_original_data])
    all_data.drop_duplicates(subset="text", keep=False, inplace=True)
    len_first_comb: Final = len(all_data)
    len_iterated_data = len(all_data)
    
    while len_iterated_data > len_first_comb:
        data.append(all_data)
        continue:
    else:
        print ('iteration is finished.')
    return data

所以,我想要发生的是将 new_data 和原始数据组合在每个过程中发生的过程,直到新数据的 len 不再大于第一个组合的 len 。然后迭代停止我试图将第一个组合 len 保存为最终长度以进行比较,但不知道如何迭代地进行此比较。

标签: pythonwhile-loopiterationdo-whilecontinue

解决方案


def iteration():
    data= []
    my_new_data = pd.read_csv((os.path.join(my_new_data, 'new_data.csv')))
    my_original_data = pd.read_csv((os.path.join(my_original_data, 'original_data.csv'))) 
    all_data = pd.concat([my_new_data, my_original_data])
    all_data.drop_duplicates(subset="text", keep=False, inplace=True)
    len_first_comb: Final = len(all_data)
    len_iterated_data = len(all_data)
    
    while len_iterated_data > len_first_comb:
        data.append(all_data)
        all_data = pd.concat([all_data, data])
        all_data.drop_duplicates(subset="text", keep=False, inplace=True)
        len_iterated_data = len(all_data)
    else:
        print ('iteration is finished.')
    return data

推荐阅读