python - 如何根据其他列中的条件将 pandas df 列中的多个值更改为 np.nan?
问题描述
我在编码方面没有太多经验,这是我的第一个问题,所以请耐心等待。我需要找到一种方法,根据另一列中的条件将 pandas df 列的多个值更改为 np.nan。因此,我创建了所需列“Vorgabe”和“Temp”的副本。
每当“Grad”中的值不是 0 时,我想将“Vorgabe”和“Temp”中定义区域中的值更改为 np.nan。
print(df)
OptOpTemp OpTemp BSP Grad Vorgabe Temp
0 22.0 20.0 5 0.0 22.0 20.0
1 22.0 20.5 7 0.0 22.0 20.5
2 22.0 21.0 8 1.0 22.0 21.0
3 22.0 21.0 6 0.0 22.0 21.0
4 22.0 23.5 7 0.0 22.0 20.0
5 23.0 21.5 1 0.0 23.0 21.5
6 24.0 22.5 3 1.0 24.0 22.5
7 24.0 23.0 4 0.0 24.0 23.0
8 24.0 25.5 9 0.0 24.0 25.5
所以我想实现这样的目标:
OptOpTemp OpTemp BSP Grad Vorgabe Temp
0 22.0 20.0 5 0.0 22.0 20.0
1 22.0 20.5 7 0.0 nan nan <-one row above
2 22.0 21.0 8 1.0 nan nan
3 22.0 21.0 6 0.0 nan nan <-one row among
4 22.0 23.5 7 0.0 22.0 20.0
5 23.0 21.5 1 0.0 nan nan
6 24.0 22.5 3 1.0 nan nan
7 24.0 23.0 4 0.0 nan nan
8 24.0 25.5 9 0.0 24.0 25.5
有人可以解决我的问题吗?
编辑:我可能不清楚。目标是将定义区域中“Vorgabe”和“Temp”中的每个值更改为 nan。在我的示例中,该区域将是上面的一行,其中包含 1.0 的行,以及中间的一行。因此,不仅是 1.0 所在的行,而且还有上下行。
解决方案
使用loc:
df.loc[df.Grad != 0.0, ['Vorgabe', 'Temp']] = np.nan
print(df)
输出
OptOpTemp OpTemp BSP Grad Vorgabe Temp
0 22.0 20.0 5 0.0 22.0 20.0
1 22.0 20.5 7 0.0 22.0 20.5
2 22.0 21.0 8 1.0 NaN NaN
3 22.0 21.0 6 0.0 22.0 21.0
4 22.0 23.5 7 0.0 22.0 20.0
5 23.0 21.5 1 0.0 23.0 21.5
6 24.0 22.5 3 1.0 NaN NaN
7 24.0 23.0 4 0.0 24.0 23.0
8 24.0 25.5 9 0.0 24.0 25.5
推荐阅读
- c# - WPF 在 ControlTemplate 的情节提要中修改 OneWayToSource 绑定属性
- python - 试图将我的 python 代码变成一个应用程序,以便轻松共享
- python - 给定上下界数组和平均值的python中的置信区间
- aws-codepipeline - CDK中代码管道的跨账户访问
- python-3.x - 如果在 Python 中使用用户名和密码,如何获取 azure 活动目录的 clientID
- amazon-web-services - 如何设置 cloudfront 以使用没有域名的 https?
- ruby-on-rails - 如何正确呈现 HTML 层次结构
- deep-learning - 3D 人脸的移动方式与 2D 照片不同。是否有任何运动分析算法来检测这种差异?
- c++ - how to navigate to a user input site on OSX?
- hive - 如何从 shell 运行 hive 命令?