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

Python中Pandas DataFrame导出Excel遇TypeError问题求解

问题解决方法

1. 修复代码中的错误

你遇到的TypeError本质是pandas 2.0及以上版本已移除DataFrame.append()方法,且该方法原本仅支持接收Series或DataFrame对象,直接传入字典会触发类型校验错误。官方推荐用pd.concat()替代,以下是修正后的代码:

基础数据拼接代码

import pandas as pd

# 定义列名
columns = ['Client', 'Country', 'ID']

# 模拟爬取到的数据源
data_source = [
    {'Client': 'John Doe', 'Country': '@Italy', 'ID': '1234567890'},
    {'Client': 'Jane Smith', 'Country': '@San Marino', 'ID': '9876543210'},
]

# 直接将数据源转为DataFrame,无需循环拼接(效率更高)
new_data_df = pd.DataFrame(data_source, columns=columns)

如果你的爬取逻辑需要逐行处理数据(比如爬取时逐行生成字典),可以先收集所有行到列表,最后一次性转成DataFrame:

# 模拟逐行爬取场景
new_data_list = []
# 替换为你的爬取循环
for item in 你的爬取结果集:
    row = {'Client': item['client'], 'Country': item['country'], 'ID': item['id']}
    new_data_list.append(row)

# 转换为DataFrame
new_data_df = pd.DataFrame(new_data_list, columns=columns)

2. 实现Excel文件的追加更新(而非覆盖)

要实现向已有Excel文件追加数据,需先判断文件是否存在:

  • 文件不存在:直接写入新数据;
  • 文件存在:读取原有数据,与新数据合并后再写入。

完整代码

import pandas as pd
import os

columns = ['Client', 'Country', 'ID']
folder_path = "/folder/user/"
file_name = os.path.join(folder_path, "output_file.xlsx")

# 模拟爬取到的新数据
data_source = [
    {'Client': 'John Doe', 'Country': '@Italy', 'ID': '1234567890'},
    {'Client': 'Jane Smith', 'Country': '@San Marino', 'ID': '9876543210'},
]
new_data_df = pd.DataFrame(data_source, columns=columns)

# 处理追加逻辑
if os.path.exists(file_name):
    # 读取原有Excel数据
    existing_df = pd.read_excel(file_name, sheet_name='Data')
    # 合并新旧数据
    combined_df = pd.concat([existing_df, new_data_df], ignore_index=True)
else:
    # 文件不存在时直接使用新数据
    combined_df = new_data_df

# 写入Excel(使用openpyxl引擎支持追加模式)
with pd.ExcelWriter(file_name, engine='openpyxl', mode='a' if os.path.exists(file_name) else 'w') as writer:
    if os.path.exists(file_name):
        # 删除原有同名sheet,避免生成重复sheet(如Data1)
        writer.book.remove(writer.book['Data'])
    combined_df.to_excel(writer, sheet_name='Data', index=False)

关键说明

  • 用os.path.join()处理路径,兼容不同操作系统的路径格式;
  • 追加模式需使用engine='openpyxl'(xlsxwriter不支持追加);
  • 追加前删除原有Data sheet,保证数据始终存储在同一个sheet中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 20:08:16