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

如何解决ValueError:值长度(1)与索引长度(30196)不匹配错误?

问题描述

尝试为Pandas数据框创建新列'BMI'时执行以下代码报错:

import pandas as pd
import numpy as np
import matplotlib as mlp
import matplotlib.pyplot as plt
import seaborn as sns
olympic = pd.read_csv('Olympic_Games.csv')

olympic['BMI']=(olympic['Weight']/[olympic['Height']/100]^2)

错误信息:

ValueError: Length of values (1) does not match length of index (30196)
错误原因
  1. 用方括号[]包裹olympic['Height']/100,将Pandas Series转换成了仅包含单个Series元素的列表,导致后续除法操作返回的结果长度为1,和原数据框30196行的索引长度不匹配。
  2. Python中^是按位异或运算符,并非平方运算,平方需要使用**2。
修正方案

直接对Pandas Series进行向量运算,去掉多余方括号并替换平方运算符:

import pandas as pd
import numpy as np
import matplotlib as mlp
import matplotlib.pyplot as plt
import seaborn as sns
olympic = pd.read_csv('Olympic_Games.csv')

# 正确计算BMI:体重(kg) ÷ (身高(m))²
olympic['BMI'] = olympic['Weight'] / (olympic['Height'] / 100) ** 2

额外提示

如果数据中存在Weight或Height的缺失值,计算后BMI列会出现NaN,可按需处理:

  • 移除含缺失值的行:olympic = olympic.dropna(subset=['Weight', 'Height'])
  • 用均值填充缺失值:olympic['Weight'] = olympic['Weight'].fillna(olympic['Weight'].mean())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 03:07:09