gpt4 book ai didi

python - 更改 Pandas 默认的 NA 类型促销

转载 作者:行者123 更新时间:2023-12-04 10:30:41 27 4
gpt4 key购买 nike

我有一个特殊的情况,我在输入中有很大的整数
以及 中的转换float64 实际更改值。

According to this page : https://pandas.pydata.org/pandas-docs/stable/user_guide/gotchas.html#na-type-promotions Pandas converts automatically integers with NA to float64.



问题是当我的输入中有 NA 值时,pandas 会自动将其转换为 'float64'即使我指定 'Int64'在构造函数中

我用 pandas 1.0.1 和 python 3.8.1 编写了一个 repl.it 脚本,显示了我的用例:
https://repl.it/@RonanTREILLET/pandastestint

对于那些不想玩它的人,我基本上是这样做的:
test_df =[
{'dataset_id': 327626200612520493},
{'dataset_id': 327626200612520493},
]
df = DataFrame(data=test_df, columns=['dataset_id'])

那么如果我这样做
print(df[col_name])

输出是:
0    327626200612520493
1 327626200612520493
Name: dataset_id, dtype: int64

这是 正确

但是,如果我这样做 :
print(df[col_name].astype('float').astype('Int64'))

我有这个输出:
0    327626200612520512
1 327626200612520512
Name: dataset_id, dtype: Int64

这是 .

主要问题是当您使用 NA 输入创建数据框时,如下所示:
#test with a NA value in DF, showing how Pandas automatically cast to `'float64'`
test_with_nan_df =[
{'dataset_id': 327626200612520493},
{'dataset_id': None}
]
df_w_nan = DataFrame(data=test_with_nan_df, columns=['dataset_id'])
print(df_w_nan[col_name].astype('Int64'))

或者
df_w_nan_int64 = DataFrame(data=test_with_nan_df, columns=['dataset_id'], dtype='Int64')
print(df_w_nan_int64[col_name])

输出是相同的:
0    327626200612520512
1 <NA>
Name: dataset_id, dtype: Int64

如您所见,即使我强制 'Int64'在数据框创建期间,它仍然是错误的值,我想 Pandas 在内部将列转换为 'float'在将其转换为 'Int64' 之前

所以 如果 我对 Pandas 的使用是正确的,我想写一个补丁到 覆盖 NA 类型促销的方法 .

有人已经这样做了吗?甚至有可能吗?

问候,

最佳答案

您可以使用 object以确保 Pandas 保持数据不变。然后您可以手动设置类型。

pd.DataFrame(data=test_with_nan_df, columns=['dataset_id'], dtype='object').astype('Int64')
# dataset_id
#0 327626200612520493
#1 NaN

#dataset_id Int64

关于python - 更改 Pandas 默认的 NA 类型促销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60435660/

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