pandas - 使用 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,我不会在训练标签中获得正确的列集。
解决方案
推荐阅读
- ibm-cloud - IBM 区块链云服务未获批准
- python - 在 Python 中使用 daff 包比较 2 个 CSV 文件
- javascript - 未捕获的不变违规:超出最大更新深度
- mysql - 如何在mysql中使用json函数按顺序插入键值对
- azure - 应用服务计划中的所有应用服务是否分摊相同的费用?
- python - 根据产品购买找到相似用户后在 python 中进行交叉销售
- reactjs - ReactJs无法从FETCH获取对象的值
- regex - 正则表达式引用捕获的组
- php - 如何在单击时查看登录表单输入的控制台输出?
- typescript - “typeof firebase”类型不存在属性“default”。错误