gpt4 book ai didi

python - 外部合并后保留 Dataframe 列数据类型

转载 作者:太空狗 更新时间:2023-10-29 17:07:38 25 4
gpt4 key购买 nike

当您使用“外部”合并在某些值上合并两个索引数据帧时,python/pandas 会自动将 Null (NaN) 值添加到它无法匹配的字段中。这是正常行为,但它会更改数据类型,您必须重申列应具有的数据类型。

fillna()dropna() 似乎不会在合并后立即保留数据类型。我需要适当的表结构吗?

通常我会运行 numpy np.where(field.isnull() etc) 但这意味着运行所有列。

有解决办法吗?

最佳答案

这实际上应该只是 bool 的问题或 int数据类型。 float , objectdatetime64[ns]已经可以容纳NaNNaT不改变类型。

因此,我建议使用新的可空数据类型。您可以使用 Int64对于您的整数和 'boolean'为您的 bool 列。这两个现在都支持 <NA> 的缺失值。 : pandas._libs.missing.NAType

import pandas as pd

df = pd.DataFrame({'a': [1]*6, 'b': [1, 2]*3, 'c': range(6)})
df2 = pd.DataFrame({'d': [1, 2], 'e': [True, False]})

df2['d'] = df2['d'].astype('Int64')
df2['e'] = df2['e'].astype('boolean')
df2.dtypes
#d Int64
#e boolean
#dtype: object

df.join(df2)
# a b c d e
#0 1 1 0 1 True
#1 1 2 1 2 False
#2 1 1 2 <NA> <NA>
#3 1 2 3 <NA> <NA>
#4 1 1 4 <NA> <NA>
#5 1 2 5 <NA> <NA>

df.join(df2).dtypes
#a int64
#b int64
#c int64
#d Int64 <- dtype preserved
#e boolean <- dtype preserved

Int64/Bool64填充值仍然符合您指定的内容,并且仅当您填充的值无法适应当前数据类型时,该列才会向上转换。

关于python - 外部合并后保留 Dataframe 列数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36743563/

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