You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将pd.DataFrame负值加256转正且保留正值?

解决Pandas DataFrame中仅对负值加256且保留正值的问题

问题场景

原始DataFrame:

import pandas as pd
dfx = pd.DataFrame({'red': [72], 'green': [101], 'blue': [-125]})

输出:

red  green  blue
0   72    101  -125

使用dfx = dfx[dfx < 0] + 256后,正值被替换为NaN,不符合需求:

red  green  blue
0  NaN    NaN   131

需要实现:仅对负值加256转为正值,同时保留原有正值不变,期望输出:

red  green  blue
0   72    101   131

错误原因

原代码通过布尔索引筛选出负值并加256,但未被筛选的位置会被赋值为NaN,直接覆盖整个DataFrame导致正值丢失。

解决方案

以下三种方法均可实现需求:

方法1:使用numpy.where(高效简洁)

import numpy as np
dfx = dfx.apply(lambda col: np.where(col < 0, col + 256, col))

对每一列元素判断:小于0则加256,否则保留原值。

方法2:使用Pandas内置mask方法(贴合Pandas风格)

dfx = dfx.mask(dfx < 0, dfx + 256)

mask方法会将满足条件(元素<0)的位置替换为对应计算后的值,不满足条件的元素保持不变。

方法3:使用applymap逐元素处理(直观易懂)

dfx = dfx.applymap(lambda x: x + 256 if x < 0 else x)

遍历DataFrame中每一个元素,根据条件直接处理。

内容的提问来源于stack exchange,提问作者lingyau lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 00:35:26