如何使用.astype()方法修改DataFrame中两列的数据类型?
使用astype()修改DataFrame指定列数据类型并调整结构
你的代码存在几个关键问题:
- 未将字典转换为pandas DataFrame就直接操作,字典的键是字符串
"0"/"1"/"2",用q7[0]会触发KeyError - 重复赋值
q7会直接覆盖原有对象,无法保留完整的DataFrame结构 - 预期结果是原数据的转置结构(原3列6行变为6列3行),但你没有执行转置操作
- 包含
np.nan的列不能直接用astype(int),因为numpy的int类型不支持缺失值,需使用pandas的可空整数类型Int64
正确实现步骤及代码:
- 导入依赖库,将字典转换为DataFrame
- 转置DataFrame以匹配预期的行列结构
- 对指定列使用
astype()修改数据类型,处理缺失值兼容问题
import numpy as np import pandas as pd # 初始字典 q7 = { "0": [4, 5.0, 2.0, 9.0, 1.0, 8], "1": [5, 6.0, np.nan, 3.0, np.nan, 2], "2": [6, np.nan, 7.0, np.nan, 4.0, 3] } # 转为DataFrame并转置,得到预期的行列布局 df = pd.DataFrame(q7).T # 设置列名与预期结果一致 df.columns = [0, 1, 2, 3, 4, 5] # 修改第0列和第5列的类型为可空整数(支持NaN) df[0] = df[0].astype('Int64') df[5] = df[5].astype('Int64') print(df)
执行结果:
0 1 2 3 4 5 0 4 5.0 2.0 9.0 1.0 8 1 5 6.0 NaN 3.0 NaN 2 2 6 NaN 7.0 NaN 4.0 3
内容的提问来源于stack exchange,提问作者Yanna Sanchez
相关产品推荐
相关产品推荐

