python - 替换 Pandas 列中的值

标签 python pandas

是否可以根据确定某个值是否高于或低于某个阈值且不适用的逻辑来替换 pandas DataFrame 中的值?`

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')

所以我想用 N/A 替换任何值 > abs 10

最佳答案

您可以创建一个 bool 掩码来仅设置满足 bool 条件的行,此外您还可以使用 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

关于python - 替换 Pandas 列中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37323548/

相关文章:

Python附加到没有白行且没有重复列的csv文件

python - 如何确定支持向量机中非线性核的特征重要性

python - 有没有办法简化这段代码?

pandas - 取最后两行的最小值

python - 用不等长度的列表填充 Pandas 列

python - 基于组和前一行 pandas 的前向填充 (ffill)

python - Odoo 8 通过自定义模块添加笔记本选项卡给出 'KeyError:'

python-3.x - 合并数据框中的重复索引

python - python/pandas 中的条件聚合

python - 满足第一级条件时更改第二级多索引标签