python - 如何让 np.where 写 True 而不是 1.0?
问题描述
我想用 True 和 NaN 值填充列
import numpy as np
import pandas as pd
my_list = [1,2,3,4,5]
df = pd.DataFrame({'col1' : [0,1,2,3,4,5,6,7,8,9,10]})
df['col2'] = np.where(df['col1'].isin(my_list), True, np.NaN)
print (df)
它打印:
col1 col2
0 0 NaN
1 1 1.0
2 2 1.0
3 3 1.0
4 4 1.0
5 5 1.0
6 6 NaN
7 7 NaN
8 8 NaN
9 9 NaN
10 10 NaN
但对我来说,打印布尔值 True,而不是浮点数 1.0 非常重要。此列与其他列交互。它们是布尔值,所以它也必须是布尔值。我知道我可以用替换功能来改变它。但是我的 DataFrame 非常大。我不能浪费时间。有一个简单的选择吗?
解决方案
df['col2'] = pd.Series(np.where(df['col1'].isin(my_list), True, np.NaN), dtype='boolean')
print (df)
col1 col2
0 0 <NA>
1 1 True
2 2 True
3 3 True
4 4 True
5 5 True
6 6 <NA>
7 7 <NA>
8 8 <NA>
9 9 <NA>
10 10 <NA>
推荐阅读
- python - 我已经设置了一个带有双 for 循环的函数来计算不同数组的总和。为什么我的函数总是返回 0?
- python - 使用 Python 同时使用 UDP 的一台服务器和 3 个客户端
- php - 列出 value 中常见的 key 和 value
- sql - 如何在 ActiveRecord 中将 where 范围添加到 SUM?
- oracle - 如何根据轮班时间表(日/中/摆动)进行查询
- java - 在同一行打印数组的元素,当单个元素使用“\n”替换绘制一个字母时
- java - 有没有办法单独部署/更新 Spring Batch Jobs?
- python - 构建多维微分矩阵
- django - 如何在没有实例的情况下在 Django 中保存外键,但使用硬编码值
- c - 如何初始化没有行或列的二维数组,并创建一个接受用户输入的函数,然后更新二维数组?