含NaN的整数列表转DataFrame变浮点数,如何转为整数类型?
问题:含NaN的整数列表转DataFrame如何保留整数类型?
当把纯整数列表转为DataFrame时,得到的是整数类型的结果:
lista=[1,2,3] print(pd.DataFrame(lista)) # 输出的DataFrame为整数类型
但如果列表里包含NaN,转换后会变成浮点数类型,就算指定dtype='int64'也没用:
listb=[1,2,3,np.nan] print(pd.DataFrame(listb)) # 输出的DataFrame为浮点数类型
请问有没有办法得到整数类型的DataFrame?
解决方法
- 使用pandas的Nullable Integer类型(Int64)
pandas从1.0版本开始支持带缺失值的整数类型Int64(注意首字母大写),它能兼容NaN值,同时保持整数类型。代码示例:
import pandas as pd import numpy as np listb=[1,2,3,np.nan] df = pd.DataFrame(listb, dtype='Int64') print(df) print(df.dtypes) # 输出 Int64
- 替换NaN为占位整数(按需使用)
如果业务场景允许用特定整数代替NaN,可以先替换列表中的NaN值,再指定整数类型转换。比如用0替换:
import pandas as pd import numpy as np listb=[1,2,3,np.nan] # 把NaN替换为0 processed_list = [x if not np.isnan(x) else 0 for x in listb] df = pd.DataFrame(processed_list, dtype='int64') print(df) print(df.dtypes) # 输出 int64
这种方法会改变原始数据的缺失值含义,只适合允许替换的场景。
内容的提问来源于stack exchange,提问作者KansaiRobot
相关产品推荐
相关产品推荐

