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

Python遍历pandas DataFrame列转整数时行值被覆盖如何解决

问题原因

你的循环写法逻辑错误:

  • df['value'] = xxx 是对整列赋值,每次循环都会把这一列所有值替换成当前行的计算结果,循环结束后整列只会保留最后一次计算的值,所以所有行结果都相同。
  • pandas做列转换尽量不要用逐行for循环,性能很差,有原生的高效实现方式。
正确实现方案

推荐方案:整列向量化转换(性能最优)

先执行print(df['c_code'].dtype)确认列类型,分两种情况处理:

  • 如果c_code列存储的是0x开头的十六进制字符串,直接用apply整列转换即可:
df['value'] = df['c_code'].apply(lambda x: int(x, 0))
  • 如果你是按照给出的示例代码创建DataFrame(十六进制值未加引号),Python初始化时就已经把0x开头的字面量解析为十进制整数,c_code本身就是整数列,直接赋值即可:
df['value'] = df['c_code']

运行后即可得到你期望的结果:
期望结果示例

原循环写法修正(不推荐,仅作参考)

如果一定要用循环实现,不能直接给整列赋值,需要逐单元格赋值:

# 先初始化空列
df['value'] = 0
for i in range(len(df)):
    df.loc[i, 'value'] = int(df['c_code'].iloc[i], 0)

注意:该写法在数据量较大时运行效率远低于向量化方案,非必要不使用。


内容的提问来源于stack exchange,提问作者SMar3552

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 04:12:55