替换Pandas列中的值

时间:2016-05-19 12:41:46

标签: python pandas

是否可以根据逻辑来替换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

1 个答案:

答案 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