首页 > 解决方案 > Pandas:如何将列(坏数据)中的太大值设置为零,我应该使用 if 函数还是完全不同的东西?

问题描述

Pandas 数据框“power”将日期时间作为索引。列是具有 float64 值的 Ap1、Ap2、Ap3 和 Solar。但是,有些数据不好,我想用零替换某个值(例如 100 000)以上的所有值。以下是数据框的外观:

power.head()
power.describe()

                    Ap1     Ap2     Ap3     Solar
Datetime                
2018-01-01 00:00:00 659.18  59.51   120.39  0.0
2018-01-01 00:01:00 600.59  119.93  179.90  0.0
2018-01-01 00:02:00 600.59  119.93  119.93  0.0
2018-01-01 00:03:00 534.67  119.93  59.97   0.0
2018-01-01 00:04:00 600.59  119.93  119.93  0.0


    Ap1             Ap2             Ap3             Solar
max 6.489067e+06    1.167420e+06    2.296201e+06    52433.040000

我正在尝试使用 if 函数遍历列,该函数将用零替换大值

def badvalue(x):
    if x > 100000:
        x == 0

power["Ap1"].apply(badvalue)

但是,这对数据没有任何影响,而且我知道您可能无论如何都无法以这种方式更改值(但我希望 Pandas 如此直观!)。那么使用 Pandas 最简单/最好的方法是什么?

如果我想同时对所有列而不是只对一列执行此操作,该方法会有所不同吗?

谢谢您的帮助。

标签: pythondatabasepandasdataframe

解决方案


利用:

power.Ap1[power.Ap1 > 10000] = 0

其他列也是如此。


推荐阅读