将负数替换为零很简单,请参见 How to replace negative numbers in Pandas Data Frame by zero,但我想知道如何做相反的事情。
我想将此处的0替换为-1:
但是df.replace(0,-1)
或df[df == 0] = -1
给了我
似乎我可以将零替换为正整数,但不能用负整数替换(即df.replace(0,-3)
用-253替换我的所有零)。
我在这里想念东西吗?
答案 0 :(得分:3)
我相信您具有8位无符号整数的数据类型。对于该数据类型,没有负数,因此-1
溢出(下溢?)到最大的数字。
df = pd.DataFrame([[0, 1], [1, 0]], dtype=np.uint8)
df.replace(0, -1)
0 1
0 255 1
1 1 255
255
是此类数字中最大的数字。
np.iinfo(np.uint8).max
255
相反,请先设置数据类型
df.astype(int).replace(0, -1)
0 1
0 -1 1
1 1 -1