gpt4 book ai didi

python - 用 np.nan 替换 '-' 将数据类型转换为 pandas 中的 float

转载 作者:行者123 更新时间:2023-12-05 06:02:06 33 4
gpt4 key购买 nike

我有一个 pandas df 如下:

 +------+----+
| x | y |
+------+----+
|ABCD | - |
|DEFG | - |
+------+----+

xy 数据类型为对象,使用下面的方法将'-'替换为 nan 后

df = df.replace('-', np.NaN)

它将 y 列的数据类型转换为 float,而 y 列的数据类型应保留为对象。此外,当我在用 NA 值替换后尝试找出具有 NA 值的列列表时,它不会显示任何具有 NA 值的列,而 y 列具有 NA 值。为什么会导致问题?

编辑:我能够找到具有 NA 值的列,如下所示

df.columns[df.isna().any()].tolist()

最佳答案

原因只是列中的 NaN 将列转换为 float 。可能的解决方案是使用 DataFrame.astype通过原始 dtypes:

df = df.replace('-',np.NaN).astype(df.dtypes)

print (df.dtypes)
x object
y object
dtype: object

print (df.applymap(type))
x y
0 <class 'str'> <class 'float'>
1 <class 'str'> <class 'float'>

如果想要测试带有缺失值的列,那么使用:

print (df.columns[df.isna().any()])
Index(['y'], dtype='object')

另一个类似的想法是只提取 NaN 列并将它们转换为对象:

df = df.replace('-',np.NaN)


d = dict.fromkeys(df.columns[df.isna().all()], 'object')
print (d)
{'y': 'object'}

df = df.astype(d)

print (df.dtypes)
x object
y object
dtype: object

关于python - 用 np.nan 替换 '-' 将数据类型转换为 pandas 中的 float,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67021102/

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