为 pandas 数据框中的列将超出定义间隔限制的值设置为给定值 (f.e.NaN)
Set the values out of the defined interval limits to a given value (f.e. NaN) for a column in pandas data frame
定义了有效值的区间限制,其中的所有 pandas 数据框列值都应设置为给定值 f.e。 NaN
。定义限制和数据框内容的值可以假定为数字类型。
具有以下限制和数据框:
min = 2
max = 7
df = pd.DataFrame({'a': [5, 1, 7, 22],'b': [12, 3 , 10, 9]})
a b
0 5 12
1 1 3
2 7 10
3 22 9
设置列 a
的限制将导致:
a b
0 5 12
1 NaN 3
2 7 10
3 NaN 9
将 where
与 between
结合使用
df.a=df.a.where(df.a.between(min,max),np.nan)
df
Out[146]:
a b
0 5.0 12
1 NaN 3
2 7.0 10
3 NaN 9
或clip
df.a.clip(min,max)
Out[147]:
0 5.0
1 NaN
2 7.0
3 NaN
Name: a, dtype: float64
您也可以将 .loc
与 between
一起使用
import pandas as pd
import numpy as np
df = pd.DataFrame({'a': [5, 1, 7, 22],'b': [12, 3 , 10, 9]})
min = 2
max = 7
df.loc[~df.a.between(min,max), 'a'] = np.nan
定义了有效值的区间限制,其中的所有 pandas 数据框列值都应设置为给定值 f.e。 NaN
。定义限制和数据框内容的值可以假定为数字类型。
具有以下限制和数据框:
min = 2
max = 7
df = pd.DataFrame({'a': [5, 1, 7, 22],'b': [12, 3 , 10, 9]})
a b
0 5 12
1 1 3
2 7 10
3 22 9
设置列 a
的限制将导致:
a b
0 5 12
1 NaN 3
2 7 10
3 NaN 9
将 where
与 between
df.a=df.a.where(df.a.between(min,max),np.nan)
df
Out[146]:
a b
0 5.0 12
1 NaN 3
2 7.0 10
3 NaN 9
或clip
df.a.clip(min,max)
Out[147]:
0 5.0
1 NaN
2 7.0
3 NaN
Name: a, dtype: float64
您也可以将 .loc
与 between
一起使用
import pandas as pd
import numpy as np
df = pd.DataFrame({'a': [5, 1, 7, 22],'b': [12, 3 , 10, 9]})
min = 2
max = 7
df.loc[~df.a.between(min,max), 'a'] = np.nan