pandas1.1.5中将df2索引值赋值给新空DataFrame列报错如何解决
报错原因
报错信息:ValueError: Must have equal len keys and value when setting with an iterable
这个报错是因为你使用df[['Name']](双中括号)选择列时,pandas会将其识别为多列赋值场景,期望接收二维结构的赋值内容,但你传入的df2.index.values是一维数组,二者维度不匹配触发校验失败。
可用解决方案
- 方案1:使用单中括号指定单列赋值(最常用,写法最简单)
代码如下:df['Name'] = df2.index.values - 方案2:如果需要保留双中括号写法(比如后续要同步赋值多列),可以先把索引转换为二维结构:
第一种写法:调用to_frame()直接将索引转为DataFrame
第二种写法:手动调整数组维度df[['Name']] = df2.index.to_frame(name='Name')df[['Name']] = df2.index.values.reshape(-1, 1) - 方案3:创建DataFrame时直接指定数据,一步完成初始化:
df = pd.DataFrame({'Name': df2.index.values})
补充说明
该规则属于pandas的基础赋值校验逻辑,和你使用的1.1.5版本无关,所有正式版pandas都存在该校验要求。
内容的提问来源于stack exchange,提问作者Peter
相关产品推荐
相关产品推荐

