使用loc选择列会导致行值出现NaN

时间:2019-01-04 18:30:39

标签: pandas

我有一个数据帧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,则在训练标签中将没有正确的列集。

0 个答案:

没有答案