python - 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 最简单/最好的方法是什么?
如果我想同时对所有列而不是只对一列执行此操作,该方法会有所不同吗?
谢谢您的帮助。
解决方案
利用:
power.Ap1[power.Ap1 > 10000] = 0
其他列也是如此。
推荐阅读
- azure - 将 B2C 重定向 URL 设置为 b2clogin.com 时,我在哪里可以将 validateAuthority 设置为 false
- python - 考虑不确定性的高斯拟合
- asp.net-mvc - 防止在 ASP.NET MVC 中为某些视图搭建脚手架
- angularjs - 根据自定义 ui-grid 上的值启用和禁用单元格选择
- javascript - ReCaptcha V3 Invisible: Uncaught (in promise) 请求超时
- python - 如何迭代 jinja 属性:错误没有属性
- angular - angular 7 新项目:错误!代码 ETARGET ; 找不到与 @angular-devkit/ 匹配的版本
- r - R:修复定义为函数的循环
- postgresql - 如何引发自定义 Postgresql 错误并在 Ecto 中处理它
- c# - .NET Core - 附件导致发送邮件失败