所以我试图用np.nan我的数据框中的值替换None并注意到在这个过程中数据框中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)
Run Code Online (Sandbox Code Playgroud)
在调用data.dtypes之前和之后调用 toreplace显示列 B 的数据类型从 float 变为 object 而 C 的数据类型保持在 int。如果我从不会发生的原始数据中删除 A 列。我想知道为什么会发生这种变化以及如何避免这种影响。
当您替换每列并从而不是replace从.pd.Series(...)pd.DataFrame(...)
除了,正如评论中提到的,NoneType()不能转换为 float (或 int,或任何数字 - 您宁愿使用NaN),因此它将自动转换为object.
import pandas as pd
import numpy as np
data = pd.DataFrame({'A':np.nan,'B':1.096, 'C':1}, index=[0])
print(data)
print(data.dtypes)
for col in data.columns:
data[col].replace(to_replace={np.nan: None}, inplace=True)
print(data)
print(data.dtypes)
Run Code Online (Sandbox Code Playgroud)
输出:
A B C
0 NaN 1.096 1
A float64
B float64
C int64
dtype: object
A B C
0 None 1.096 1
A object
B float64
C int64
dtype: object
Run Code Online (Sandbox Code Playgroud)