如何将Sparse类型的DataFrame取消稀疏格式转换为常规int类型
去稀疏化转换方法
失效原因说明
直接使用.astype(int)仅会修改稀疏结构内部存储值的数据类型,不会取消稀疏属性,因此无法得到常规int类型的列。
可用实现方案
- 针对单个稀疏列转换:
使用pandas稀疏列内置的sparse.to_dense()方法将稀疏结构展开为稠密数组,即可得到常规int类型:
# 假设目标列名为col df['col'] = df['col'].sparse.to_dense() # 若需要强校验int类型,可在后面追加astype声明 df['col'] = df['col'].sparse.to_dense().astype(int)
- 针对DataFrame所有稀疏列批量转换:
遍历判断列类型,统一处理所有稀疏列:
import pandas as pd for col in df.columns: # 判断当前列是否为稀疏类型 if pd.api.types.is_sparse_dtype(df[col]): df[col] = df[col].sparse.to_dense()
操作完成后可通过df['col'].dtype查看类型,已转换为常规int/int64类型。
内容的提问来源于stack exchange,提问作者gtomer
相关产品推荐
相关产品推荐

