python - 用 DataFrame 的 NaN 替换特定范围的值
问题描述
我想根据特定列上的范围值条件用 NaN 替换多个列的值范围。
即:假设我有[col1_min = 5, col1_max = 15]
,并且[col2_min = 2, col2_max = 20]
列看起来像这样:
df = pd.DataFrame({'col1':[1,50,15,10,4], 'col2':[12,10,100,11,56]})
col1 col2
1 12
50 10
15 100
10 11
4 56
所需的输出将是:
df_filtered
col1 col2
nan 12
nan 10
15 nan
10 11
4 nan
我可以做的伪代码是groupby
使用'df.groupby('col1'或'col2')'边界内的每一列,然后过滤每一列,然后合并回原来的,但我想将内存成本保持在最低限度。
有什么方法可以轻松做到这一点?
解决方案
使用Series.where
:
df['col1']=df['col1'].where(df['col1'].between(5,15))
df['col2']=df['col2'].where(df['col2'].between(2,20))
推荐阅读
- python - 按位运算将第 n 位设置为负数
- c++ - 如何在 C++ 中读取文本文件
- php - 如何在 Laravel 5.8 中显示产品类别名称?
- mailchimp - 如何从 Mailchimp 的活动中获取工作流 ID 以获取客户详细信息?
- react-admin - 输入不存在时创建 AutocompleteInput 和 AutocompleteArrayInput
- javascript - 如何在打字稿中创建带有列表标题的数组?
- jquery - 为什么后续表单提交不起作用?
- json - 尝试命名时如何解决 Flask 中的无效语法错误?
- azure-data-lake - 从 u-sql 中的文件夹中获取要处理的文件数
- c++ - stable_clock::now() 返回类型对 gcc 无效