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

使用字典为Pandas DataFrame添加列时触发Columns must be same length as key错误

问题修复:Pandas赋值触发ValueError: Columns must be same length as key

错误原因

你的代码存在两个核心问题:

  1. 赋值方式不匹配:你用bank2[['Paragraph']](双层方括号,指定列名列表)接收apply的结果,但apply(axis=1)返回的是一维Series,而非多列的DataFrame。Pandas要求用列列表赋值时,右侧必须是列数匹配的DataFrame,因此触发长度不匹配错误。
  2. DataFrame初始化冗余:bank_info里的Paragraph列表多写了一个逗号,导致语法上是4个空字符串元素,但Category和Amount只有3个元素——不过Pandas会自动截断到最短序列生成3行DataFrame,这不是报错的直接原因,但属于代码冗余。

修复方案

方案1:修正赋值方式(用单层方括号)

将bank2[['Paragraph']]改为bank2['Paragraph'],直接用Series赋值给单列:

import pandas as pd

court_dict = dict(zip(['INC:INC08 Pensions', 'TX:TX01 Federal Tax', 'HO:HO08 Rent'], [8, 8, 0]))
bank_info = {
        'Category':['INC:INC08 Pensions', 'TX:TX01 Federal Tax', 'HO:HO08 Rent'],
        'Amount':[1250.23, 300.0, 1000],
        'Paragraph': ['', '', '']  # 修正多余逗号,保持3个元素
            }
bank2 = pd.DataFrame(bank_info)


def get_column_names(row: pd.core.series.Series, position: int) -> str:
    category = row['Category']
    result = court_dict.get(category, 'd')
    print(category, result)
    return result


if __name__=="__main__":
    bank2['Paragraph'] = bank2.apply(lambda row:get_column_names(row, 0), axis=1)  # 改为单层方括号
    print(bank2)

方案2:用向量化操作替代apply(更高效)

逐行apply效率偏低,直接用map方法实现字典映射,性能更优:

import pandas as pd

court_dict = dict(zip(['INC:INC08 Pensions', 'TX:TX01 Federal Tax', 'HO:HO08 Rent'], [8, 8, 0]))
bank_info = {
        'Category':['INC:INC08 Pensions', 'TX:TX01 Federal Tax', 'HO:HO08 Rent'],
        'Amount':[1250.23, 300.0, 1000],
        'Paragraph': ['', '', '']
            }
bank2 = pd.DataFrame(bank_info)

if __name__=="__main__":
    # 直接用map映射字典,不存在的key用fillna填充默认值'd'
    bank2['Paragraph'] = bank2['Category'].map(court_dict).fillna('d')
    print(bank2)

运行后输出:

Category   Amount Paragraph
0  INC:INC08 Pensions  1250.23         8
1  TX:TX01 Federal Tax   300.00         8
2       HO:HO08 Rent  1000.00         0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 12:45:24