我有十個資料集,我把它們分成訓練集和測驗集:
我有十個資料集,我把它們分成訓練集和測驗集。
names=["df1"/span>, "df2","df3", "df4"。"df5"/span>, "df6"/span>, "df7"/span>。"df8"/span>, "df9"/span>, "df10"/span>]
dataset_list = []
for i in range(len(names)) 。
datasets = pd.read_csv(f"{fulldatafolder}/" names[i] "_Full_Dataset.csv")
dataset_list.append(datasets)
training_set_list=list()
test_set_list=list()
for dataset in dataset_list:
training_sets, test_sets=np.split(dataset, [int(.90*len(dataset)])
training_set_list.append(training_sets)
test_set_list.append(test_sets)
然而,如果我嘗試將所有這些資料集保存到各自的檔案夾中,如下所示:
for names, dataset in enumerate(training_set_list):
dataset.to_csv(f"{trainingfolder}/{format(names)}_Training_Set. csv", index=False, sep=", ")
for names, dataset in enumerate(test_set_list)。
dataset.to_csv(f"{testfolder}/{format(names)}_Test_Set。 csv", index=False, sep=", ")
我得到的.csv檔案在"_Training_Set.csv "和"_Test_Set.csv "前面有一個數字(0,...,9),而不是在串列names中指定的名稱 "df1",..., "df10"。我怎樣才能解決這個問題呢?
uj5u.com熱心網友回復:
當使用enumerate時,它會回傳計數器和值。基本上,你在這里所做的是引入一個新的、本地的names變數(而不是之前的,帶有名字串列的變數),并從列舉中獲得一個計數器。我猜你認為這將會在原始變數中進行回圈。
如果你想回圈通過兩個串列,你可以使用zip():
for name, dataset in zip(names, training_set_list)。
dataset.to_csv(f"{trainingfolder}/{format(name)}_Training_Set。 csv", index=False, sep=", ")
for name, dataset in zip(names, test_set_list)。
dataset.to_csv(f"{testfolder}/{format(name)}_Test_Set。 csv", index=False, sep=", ")
除此之外,我還會把你的第一個回圈從:
改為:for i in range(len(names))。
datasets = pd.read_csv(f"{fulldatafolder}/" names[i] "_Full_Dataset.csv"/span>)
to:
for name in names。
datasets = pd.read_csv(f"{fulldatafolder}/{name}_Full_Dataset.csv"/span>)
正如你所看到的,沒有必要創建一個范圍,因為你可以直接在串列中回圈。其次,由于你已經使用"f"來格式化一個字串,最好在字串中直接使用該變數,而不是用" "符號來連接字串。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/325368.html
標籤:
