gpt4 book ai didi

python - pandas 中 int64 到 float64 的非自愿转换

转载 作者:行者123 更新时间:2023-11-30 22:15:26 24 4
gpt4 key购买 nike

别介意下面的——我明白问题的原因了。这种转变当然会产生 N/A。

我想防止在将数据帧水平连接到自身时发生类型转换。我有一个数据框,其中所有列都是 int64 (索引是 datetime64[ns]):

df.dtypes
Out[118]:
op int64

我连接下一行的列(后缀为“_next”)与当前行出现在同一行:

df = pd.concat([df, df.shift(-1).add_suffix('_next')], axis=1)

但是随后连接列上的类型更改为 float64:

df.dtypes
Out[122]:
op int64
op_next float64

有没有办法阻止这种类型转换?谢谢。

最佳答案

发生这种情况是因为 df.shift(-1) 有一个 NaN 元素,它是一个 float。这样的系列将自动向上转换为float。这是一个最小的例子:

df = pd.DataFrame({'op': [1, 2, 3]})
df = pd.concat([df, df.shift(-1).add_suffix('_next')], axis=1)

print(df)

op op_next
0 1 2.0
1 2 3.0
2 3 NaN

除了使用 fillna 填充整数并重新转换之外,您无能为力。您可以在 pd.concat 之前或之后执行此操作:

之前

df = pd.concat([df, df.shift(-1).fillna(0).astype(int).add_suffix('_next')], axis=1)

之后

df = pd.concat([df, df.shift(-1).add_suffix('_next')], axis=1)
df = df.fillna(0).astype(int)

关于python - pandas 中 int64 到 float64 的非自愿转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50300983/

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