python - 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 保存为最终长度以进行比较,但不知道如何迭代地进行此比较。
解决方案
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