gpt4 book ai didi

python - 数据框替换防止在提供 int64 值时替换不正确的 int32 字段

转载 作者:太空宇宙 更新时间:2023-11-04 05:19:05 25 4
gpt4 key购买 nike

问题:如何替换数据框中所有特定的 int64 值,但避免错误地替换不相等的 int32 值。

当提供大的 int64 值时,Dataframe 会错误地替换 int32 值。下面我创建了 minimal 示例,我想将所有具有大值的字段替换为 -1。鉴于所有数据均为零,因此不应更新任何内容。但是,替换后“a”列变为 -1

import pandas
import numpy
dtype = [('a','int32'), ('b','int64'), ('c','float32')]
index = ['x', 'y']
columns = ['a','b','c']
values = numpy.zeros(2, dtype=dtype)
df2 = pandas.DataFrame(values, index=index)
df2.replace(-9223372036854775808, -1)

输出是:

     a  b     c
x -1 0 0.0
y -1 0 0.0

编辑:

看起来像 numpy 向下转换类型,但问题仍然是如何在数据帧转换中避免它?注:-9223372036854775808为十六进制8000000000000000

x = numpy.array(-9223372036854775808, dtype='int64')
print('as int32: ', x.astype(numpy.int32))
#produces
#('as int32: ', array(0, dtype=int32))

最佳答案

您正确地观察到问题是由类型缩小引起的。为什么不只替换那些具有匹配或至少足够宽数据类型的列?

df2[['b','c']].replace(-9223372036854775808, -1, inplace=True)

关于python - 数据框替换防止在提供 int64 值时替换不正确的 int32 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40937771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com