我想創建一個 csv 檔案,該檔案結合了訓練和測驗資料以及標簽以將其用于專案。問題是在 concat 函式中,即使在使用索引重置之后,標簽仍然是 Nan,我不明白出了什么問題。資料集在此鏈接中:https : //wetransfer.com/downloads/9f0562b7ec341ebb663262af78971b8020211228154538/84d58d
import pandas as pd
from sklearn.utils import shuffle
# remove first col from training dataset
data = pd.read_csv('/home/katerina/Desktop/PBMC_training_set_data.csv')
first_column = data.columns[0]
data = data.drop([first_column], axis=1)
data.to_csv('new1.csv', index=False)
# remove first col from testing dataset
data2 = pd.read_csv('/home/katerina/Desktop/PBMC_testing_set_data.csv')
first_column = data2.columns[0]
data2 = data2.drop([first_column], axis=1)
data2.to_csv('new2.csv', index=False)
#read training labels
data_labels = pd.read_csv('/home/katerina/Desktop/PBMC_training_set_label.csv')
#read testing labels
data2_labels = pd.read_csv('/home/katerina/Desktop/PBMC_testing_set_label.csv')
train = pd.concat([data_labels, data], axis=1, join='inner')
print(train.shape)
test = pd.concat([data2_labels, data2], axis=1, join='inner')
print(test.shape)
test.reset_index(drop=True, inplace=True)
train.reset_index(drop=True, inplace=True)
frame = pd.concat([train, test], axis=0)
print(frame)
uj5u.com熱心網友回復:
我懷疑正在發生的事情是您在concat(). (它們可能僅在訓練集和測驗集之間重復,而不必分別在集合內重復。)這可能會導致concat(),因為索引值被假定為唯一的......并且它可以通過將 some 設定為 NaN 來進行補償。呼叫將reset_index()分別給出從 1 開始的索引值。
要解決此問題:在 pd.concat() 中設定 ignore_index=True。從檔案:
ignore_index: bool,默認為 False 如果為 True,則不使用沿串聯軸的索引值。結果軸將被標記為 0, ..., n - 1。如果您在串聯軸沒有有意義的索引資訊的情況下串聯物件,這將非常有用。請注意其他軸上的索引值在連接中仍然有效。
如果這不起作用,請檢查:在連接之前和 reset_index() 之后,測驗和訓練的索引中是否有 NaN?他們不應該,但檢查。如果他們這樣做,那些將結轉到 concat 中。
uj5u.com熱心網友回復:
我只是用不同的順序進行了連接,它奏效了。nans 是沒有正確合并標簽的結果。我沒有創建一個帶有標簽的單列,而是創建了兩個,其中一半是空的,一個是 train_labels,一個是 test_labels。
import pandas as pd
from sklearn.utils import shuffle
# remove first col from training dataset
data = pd.read_csv('/home/katerina/Desktop/PBMC_training_set_data.csv')
first_column = data.columns[0]
data = data.drop([first_column], axis=1)
print(data.shape)
# remove first col from testing dataset
data2 = pd.read_csv('/home/katerina/Desktop/PBMC_testing_set_data.csv')
first_column = data2.columns[0]
data2 = data2.drop([first_column], axis=1)
print(data2.shape)
#read training labels
data_labels = pd.read_csv('/home/katerina/Desktop/PBMC_training_set_label.csv')
print(data_labels.shape)
#read testing labels
data2_labels = pd.read_csv('/home/katerina/Desktop/PBMC_testing_set_label.csv')
print(data2_labels.shape)
#concat data without labels
frames = [data, data2]
d = pd.concat(frames)
#concat labels
l = data_labels.append(data2_labels)
#create the original dataset
print(d.shape, l.shape)
dataset = pd.concat([l, d], axis=1)
dataset = shuffle(dataset)
dataset
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/397999.html
