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

如何给Pandas DataFrame添加行?新手循环追加报错求助

解决Pandas追加行时的TypeError问题

你的代码存在的关键错误

  • 字典键未加引号:{Name: 'John'} 里的Name必须是字符串格式'Name',否则Python会将其视为未定义变量,引发语法错误
  • 字典访问方式错误:普通字典不能用.访问属性,需改用person['Name']这种键索引方式
  • append()方法误用参数:Pandas的DataFrame.append()没有axis参数,该参数属于pd.concat(),添加后会直接导致参数错误
  • 数据顺序不匹配:你的Series数据顺序和列顺序['Ticker', 'Name', 'Age', 'Height']不对应,'N/A'应该对应第一列Ticker

修正后的代码示例

方法1:修复append的使用(注意:append已在Pandas 2.0+版本弃用,仅作基础演示)

import pandas as pd

myCols = ['Ticker', 'Name', 'Age', 'Height']  
finalData = pd.DataFrame(columns=myCols)

# 修正字典键为字符串,修复语法错误
listOfPerson = [
    {'Name': 'John', 'Age': '27', 'Height': '115'},
    {'Name': 'Jill', 'Age': '25', 'Height': '110'}
]

for person in listOfPerson:
    # 修正数据顺序匹配列索引,用字典键取值,移除无效的axis参数
    finalData = finalData.append(
        pd.Series(
            ['N/A', person['Name'], person['Age'], person['Height']],
            index=myCols
        ),
        ignore_index=True
    )

print(finalData)

方法2:推荐使用pd.concat(高效且无弃用风险)

避免在循环内重复合并,先收集所有行数据再一次性合并,效率更高:

import pandas as pd

myCols = ['Ticker', 'Name', 'Age', 'Height']  
finalData = pd.DataFrame(columns=myCols)

listOfPerson = [
    {'Name': 'John', 'Age': '27', 'Height': '115'},
    {'Name': 'Jill', 'Age': '25', 'Height': '110'}
]

# 先收集所有待追加的行数据
rows_to_append = []
for person in listOfPerson:
    row_series = pd.Series(
        ['N/A', person['Name'], person['Age'], person['Height']],
        index=myCols
    )
    rows_to_append.append(row_series)

# 一次性完成合并
finalData = pd.concat([finalData] + rows_to_append, ignore_index=True)

print(finalData)

更高效的简化写法

直接构造符合列结构的字典列表,转成DataFrame后合并,完全避免循环操作:

import pandas as pd

myCols = ['Ticker', 'Name', 'Age', 'Height']  
finalData = pd.DataFrame(columns=myCols)

listOfPerson = [
    {'Name': 'John', 'Age': '27', 'Height': '115'},
    {'Name': 'Jill', 'Age': '25', 'Height': '110'}
]

# 直接构造目标结构的字典列表
new_data = [
    {'Ticker': 'N/A', 'Name': p['Name'], 'Age': p['Age'], 'Height': p['Height']}
    for p in listOfPerson
]

# 合并数据
finalData = pd.concat([finalData, pd.DataFrame(new_data)], ignore_index=True)

print(finalData)

关于concat方法的补充说明

你之前遇到concat提示不存在的问题,大概率是调用方式错误:concat是Pandas的顶级函数,需用pd.concat()调用,而非finalData.concat()。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 00:05:55