首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >即使在index_reset之后,Concat也创建了Nan值

即使在index_reset之后,Concat也创建了Nan值
EN

Stack Overflow用户
提问于 2021-12-28 15:55:12
回答 2查看 504关注 0票数 1

我想要创建一个csv文件,它将训练数据和测试数据以及标签组合在一起,用于项目。问题是,在concat函数中,即使在使用了索引重置之后,标签仍然是Nan,我不知道哪里出了问题。数据集位于以下链接中:https://wetransfer.com/downloads/9f0562b7ec341ebb663262af78971b8020211228154538/84d58d

代码语言:javascript
复制
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)
EN

回答 2

Stack Overflow用户

发布于 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?他们不应该,但是检查一下。如果他们这样做了,他们就会继续下去。

票数 0
EN

Stack Overflow用户

发布于 2021-12-28 18:38:23

我只是按不同的顺序做了一下,结果成功了。nans是没有合并标签的结果。我创建了两个标签,其中一半是空的,一个是用train_labels创建的,另一个是用test_labels创建的。

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70509433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档