You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用.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

正确实现步骤及代码:

  1. 导入依赖库,将字典转换为DataFrame
  2. 转置DataFrame以匹配预期的行列结构
  3. 对指定列使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 09:55:56