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

Python中DataFrame指定列厘米转英寸的实现与TypeError报错解决

单位统一转换为英寸的实现方案

报错根因

你收到的TypeError: 'Series' object cannot be interpreted as an integer是因为原代码中range(df['Item_lenght'])传入了pandas的Series对象作为参数,而range函数仅支持接收整数类型的入参,无法识别序列对象。

除此之外你的原代码还有几个逻辑问题:

  • 直接对整个df['lenght_measure']列做相等判断,返回的是布尔值序列,不能直接放在if语句中做单条件判断
  • 函数内部硬编码引用外部的df变量,复用性极低
  • return语句放在for循环内部,第一次循环执行就会直接返回结果,不会遍历所有行

正确实现方式

优先使用pandas向量化操作,效率远高于自行编写循环遍历:

方法1:单判断场景简洁实现(仅需处理厘米/英寸两种单位)

直接用numpy.where做条件赋值:

import numpy as np

# 转换后的值存到新列length_inch,已经是英寸的数值直接保留
df['length_inch'] = np.where(
    df['lenght_measure'] == 'centimeters',
    df['Item_lenght'] / 2.54,
    df['Item_lenght']
)

方法2:多单位扩展场景实现

如果后续需要新增英尺、米等其他单位的转换逻辑,用按行apply的方式更易维护:

def convert_to_inch(row):
    # 可按需新增其他单位的转换规则
    if row['lenght_measure'] == 'centimeters':
        return row['Item_lenght'] / 2.54
    # 示例:新增英尺转英寸逻辑
    # elif row['lenght_measure'] == 'feet':
    #     return row['Item_lenght'] * 12
    else:
        # 默认单位为英寸,直接返回原值
        return row['Item_lenght']

# axis=1表示按行遍历传入函数
df['length_inch'] = df.apply(convert_to_inch, axis=1)

注意:你代码中的列名lenght为拼写错误,正确拼写是length,如果实际表中列名是正确拼写,需要同步修改代码中的列名避免触发KeyError。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:54:02