我想要创建一个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)发布于 2021-12-28 16:10:34
我怀疑正在发生的事情是在concat()之前有重复的索引值。(它们可能只在火车和测试组之间重复,而不一定单独地在集合中重复。)这可能会抛弃concat(),因为索引值被认为是唯一的.它可能会通过将一些设置为NaN来弥补。对reset_index()的调用将分别为它们提供从1开始的索引值。
要解决这个问题:在pd.concat()中设置pd.concat。来自文档
ignore_index: bool,默认为False,如果为True,则不要沿级联轴使用索引值。生成的轴将标记为0,…。如果连接对象的连接轴没有有意义的索引信息,这是非常有用的。注意,在联接中,其他轴上的索引值仍然受到尊重。
如果这不起作用,请检查:在连接之前和reset_index()之后,test & train是否在索引中包含了NaNs?他们不应该,但是检查一下。如果他们这样做了,他们就会继续下去。
发布于 2021-12-28 18:38:23
我只是按不同的顺序做了一下,结果成功了。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)
datasethttps://stackoverflow.com/questions/70509433
复制相似问题