首页 > 解决方案 > 用 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')'边界内的每一列,然后过滤每一列,然后合并回原来的,但我想将内存成本保持在最低限度。

有什么方法可以轻松做到这一点?

标签: pythonpython-3.xpandasdataframefilter

解决方案


使用Series.where

df['col1']=df['col1'].where(df['col1'].between(5,15))
df['col2']=df['col2'].where(df['col2'].between(2,20))

推荐阅读