如何用负1替换熊猫数据框中的零

时间:2019-05-28 18:36:19

标签: python pandas dataframe

将负数替换为零很简单,请参见 How to replace negative numbers in Pandas Data Frame by zero,但我想知道如何做相反的事情。

我想将此处的0替换为-1:

enter image description here

但是df.replace(0,-1)df[df == 0] = -1给了我

enter image description here

似乎我可以将零替换为正整数,但不能用负整数替换(即df.replace(0,-3)用-253替换我的所有零)。

我在这里想念东西吗?

1 个答案:

答案 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