是否可以根据逻辑来替换pandas DataFrame
中的值,该逻辑确定某个值是否高于或低于某个阈值N / A?
import pandas as pd
df = pd.DataFrame({'date': pd.date_range(start='2015-12-31',
periods=13,
freq='M'),
'val': [1, 10, 25, -1000, 45, 66, 99, 88,128, 256,512,1024, 2048]}).set_index('date')
所以我想替换任何值> abs 10与N / A
答案 0 :(得分:2)
您可以创建一个布尔掩码来仅设置符合布尔条件的行,另外您可以使用abs
来测试值是否为+/- 10:
In [107]:
df.loc[df['val'].abs() > 10, 'val' ] = np.NaN
df
Out[107]:
val
date
2015-12-31 1.0
2016-01-31 10.0
2016-02-29 NaN
2016-03-31 NaN
2016-04-30 NaN
2016-05-31 NaN
2016-06-30 NaN
2016-07-31 NaN
2016-08-31 NaN
2016-09-30 NaN
2016-10-31 NaN
2016-11-30 NaN
2016-12-31 NaN