因此,我试图用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)
在调用data.dtypes
之前和之后调用replace
显示,列B的数据类型从float更改为对象,而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)
输出:
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
Python:如何根据另一列元素明智地查找一列中的空单元格计数? - pythondf = pd.DataFrame({'user': ['Bob', 'Jane', 'Alice','Jane', 'Alice','Bob', 'Alice'], 'income…
如何不按值而是按值范围合并两个数据框? - python数据框A:pd.Dataframe({ 'price': [50, 150, 250], 'group':[2, 5, 10] }) 数据框B:pd.Dataframe({ 'low_price': [0, 100, 200], 'high_price': [99, 199, 2…
如何在一个热编码的熊猫数据框中找到列的正索引? - python我有一个热编码的熊猫数据框,其形式为:df A B C D ID #1 2 1 0 1 #2 1 0 0 1 #3 1 1 1 0 df = pd.DataFrame({'ID_1':['#1','#1','#3','#1'], 'ID_2'…
Python-Excel导出 - python我有以下代码:import pandas as pd import requests from bs4 import BeautifulSoup res = requests.get("https://www.bankier.pl/gielda/notowania/akcje") soup = BeautifulSoup(res.cont…
熊猫根据另一个数据框将多个列和行值设置为nan - python我有两个大型数据框,df1:Col1 Col2 Val1 Val2 Val3 asd ASYL 4.2 4.2 ppq CONE 35 35 DA HU 100 100 而df2是Col1 Col2 Val1 Val2 Val3 asd ASYL 7 12 17 ppq CONE 17 19 19 DA HU 5 14 13 两个数据框具有相同的索引列Col…