如何使用自定义名称保存划分后的训练集与测试集CSV文件
问题根因
- 你在保存文件的循环中,错误将
enumerate()返回的索引值赋值给了names变量,覆盖了提前定义的存储df1`df10`名称的`names`列表,因此文件名前缀只能输出09的数字。 - 你的
training_set_list、test_set_list的元素顺序和初始names列表的顺序是一一对应的,直接通过索引取对应位置的名称即可修复问题。
修复代码
你只需要修改保存环节的代码即可:
# 保存训练集 for idx, dataset in enumerate(training_set_list): dataset.to_csv(f"{trainingfolder}/{names[idx]}_Training_Set.csv", index=False, sep=",") # 保存测试集 for idx, dataset in enumerate(test_set_list): dataset.to_csv(f"{testfolder}/{names[idx]}_Test_Set.csv", index=False, sep=",")
优化写法(可选)
你可以在读取数据集时就绑定名称和对应的训练/测试集,避免后续出现顺序对应错误的问题:
import pandas as pd import numpy as np names=["df1","df2","df3", "df4", "df5", "df6", "df7", "df8", "df9", "df10"] dataset_pairs = [] # 读取并拆分数据集时直接绑定名称 for name in names: full_df = pd.read_csv(f"{fulldatafolder}/{name}_Full_Dataset.csv") train_df, test_df = np.split(full_df, [int(.90*len(full_df))]) dataset_pairs.append((name, train_df, test_df)) # 保存文件 for name, train_df, test_df in dataset_pairs: train_df.to_csv(f"{trainingfolder}/{name}_Training_Set.csv", index=False) test_df.to_csv(f"{testfolder}/{name}_Test_Set.csv", index=False)
内容的提问来源于stack exchange,提问作者Brayden Clarkson
相关产品推荐
相关产品推荐

