首页 > 解决方案 > 使用 loc 选择列会导致行值中出现一些 NaN

问题描述

我有一个数据框 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,我不会在训练标签中获得正确的列集。

标签: pandas

解决方案


推荐阅读