我有一个数据帧m,看起来像这样,我计划在删除少量测试标签后将其变成训练标签:
SampleNbr 1 2 3 4 5 6 7 8 9 10 ... 12155 12156 12157 12158 12159 12165 12166 12167 12168 12169
om_unspec 10.0 8.24 10.0 6.78 10.0 8.54 10.0 10.0 10.0 10.0 ... 2.68 3.37 1.67 1.74 1.25 6.2 5.69 4.2 3.01 1.43
1 rows × 519 columns
我有一个训练集,它是通过按列删除一部分输入而创建的:
train_dataset = l.sample(frac=0.8,random_state=0, axis=1)
保留在train_dataset中的结果列如下所示:
Int64Index([421, 107, 310, 233, 173, 15, 134, 230, 438, 97,
...
256, 94, 494, 95, 470, 169, 69, 305, 48, 341],
dtype='int64', length=415)
我想在训练标签中保留与训练数据中相同的列,因此我使用training_set列从m中进行选择:
train_labels = m.loc[:, train_dataset.columns]
但这会导致:
421 107 310 233 173 15 134 230 438 97 ... 256 94 494 95 470 169 69 305 48 341
om_unspec NaN NaN NaN NaN 10.0 9.59 NaN NaN NaN 10.0 ... NaN 10.0 NaN NaN NaN 10.0 10.0 NaN NaN NaN
1 rows × 415 columns
因此,大小是正确的,我想要的列是正确的,但是行数据主要是NaN。我觉得这与m具有'SampleNbr'索引,而train_labels没有'SampleNbr'索引有关,但是我不知道如何解决。如果使用iloc,则在训练标签中将没有正确的列集。