pandas - Pandas 使用索引将行值替换为零
问题描述
我需要从一个数据帧“df”(未显示)应用索引,条件是真/假,df 中的行值是否包含 NaN。我发现该索引被称为“rowswithnan”,如下所示是一个系列。我需要使用此索引将不同数据帧“df2”的行值设置为零 (0)。我已经尝试了很多事情并且遇到了不同的错误。
系列 rowswithnan 索引如下所示:
0 False
1 True
2 True
3 False
和 df2 看起来像这样:
plant_name power_kwh hour day month year
0 AREC 32963.4 23 31 12 2020
1 AREC 35328.2 22 31 12 2020
2 AREC 37523.6 21 31 12 2020
3 AREC 36446.0 20 31 12 2020
使用“rowswithnan”的索引后,我需要 df2 在“power_kwh”列中使用“零”替换看起来像这样:
df2
plant_name power_kwh hour day month year
0 AREC 32963.4 23 31 12 2020
1 AREC 0 22 31 12 2020
2 AREC 0 21 31 12 2020
3 AREC 36446.0 20 31 12 2020
谢谢你。
解决方案
由于您有一系列描述 NaN 在数据框中的位置,我猜有一种更简单的方法来处理整个情况。rowswithnan
但是,这是对您在评论中删除系列索引为 False的行的请求的回答。
首先将该系列作为数据框的一列:
df['contains_nan'] = `rowswithnan`
然后使用布尔过滤:
df = df.loc[~df.contains_nan]
要将值power_kwh
设置为零而不是删除行,请执行以下操作:
df.loc[df.contains_nan, 'power_kwh'] = 0
推荐阅读
- java - Android 更新小部件通过 Fragment 或 Activity 中的按钮
- javascript - 为什么我的弹跳动画在它应该开始的位置上方 50 像素处开始?
- java - JSON schema validation with Java API
- mysql - 如何对相同时间步长范围内的值求和
- java - 如何避免退出游戏并显示部分代码?
- python - 在 RStudio 和使用 reticulate 的闪亮应用程序中运行 python 脚本时出错
- javascript - 我如何摆脱这个边界?
- c# - 在 C# 中创建一个线程并等待操作
- angular - Jasmine 间谍对象模拟方法返回未被覆盖
- mysql - 从另一个表插入并更新第三个表