【发布时间】:2020-04-17 10:15:49
【问题描述】:
所以我试图用None 替换我的数据框中的np.nan 值,并注意到在此过程中数据框中的float 列的数据类型更改为object,即使它们不包含任何缺少数据。
举个例子:
import pandas as pd
import numpy as np
data = pd.DataFrame({'A':np.nan,'B':1.096, 'C':1}, index=[0])
data.replace(to_replace={np.nan:None}, inplace=True)
在调用replace 之前和之后调用data.dtypes 表明B 列的数据类型从float 更改为object,而C 的数据类型保持在int。
如果我从不会发生的原始数据中删除 A 列。
我想知道为什么会发生这种变化以及如何避免这种影响。
【问题讨论】:
-
@yatu:为什么要立即关闭?链接的答案没有说明为什么其他不相关的列会在其
dtype中看到变化;如果在替换之前删除了A,则不会出现 OP 中的行为。 -
是的,没错,重新打开了@fuglede
-
看起来像一个错误 - 你能在这里报告吗? github.com/pandas-dev/pandas/issues
-
对我来说看起来有问题。不明白为什么替换
NaNs也会影响没有缺失值的浮点列。如果您找不到相关问题,我建议您按照@ignoring_gravity 的建议进行报告 -
纯属推测,但我假设 None 被视为纯字符串 因为存在
np.nan值,因为在 a 中没有明确定义None字符串列或数字列,因此默认将其视为对象。