讲师中心 微信公众号
AI工具推荐 视频效率加速

如何正确追加数据到 Pandas DataFrame 并保存为 CSV 文件

冬萱大大_8592

冬萱大大_8592

发布时间:2026-11-09 08:34:06

|

925人浏览过

|

来源于php中文网

原创

如何正确追加数据到 Pandas DataFrame 并保存为 CSV 文件

本文详解为何在多次追加数据时 DataFrame 列结构错乱,并提供完整解决方案:统一读写分隔符、避免弃用方法、使用 pd.concat() 安全合并,确保 CSV 文件结构稳定。

本文详解为何在多次追加数据时 dataframe 列结构错乱,并提供完整解决方案:统一读写分隔符、避免弃用方法、使用 `pd.concat()` 安全合并,确保 csv 文件结构稳定。

在使用 Pandas 向 CSV 文件持续追加用户输入(如网站、账号、密码)时,常见的结构崩塌问题(如列名偏移、新增异常列、数据错位)往往并非源于逻辑错误,而是读写分隔符不一致与过时 API 使用共同导致的。

核心问题分析如下:

  • ❌ 写入时指定 sep=";",但读取时未指定:
    pd.read_csv("MyPassword_test.txt") 默认按逗号 , 解析,而文件实际以分号 ; 分隔,导致列解析错位,后续所有操作基于错误结构,引发连锁崩溃。

  • ❌ 误用已弃用的 .append() 方法:
    data._append(...) 是内部方法(带下划线),且 .append() 已于 Pandas 2.0 正式移除。应使用 pd.concat() 替代,它更稳定、语义清晰、支持类型安全合并。

    Csv Brain
    Csv Brain

    加载CSV文件,使用自然语言(英文)提问。通过Anthropic、OpenAI或本地Ollama实现AI驱动的自然语言查询,无需SQL。

    下载
  • ❌ 重复写入未重置索引或处理空文件边界:
    虽非主因,但健壮性需考虑首次创建与后续追加的一致性。

✅ 正确做法是:读写均显式声明分隔符,并统一使用 pd.concat() 追加数据。以下是修复后的完整代码(含健壮性增强):

from tkinter import *
import pandas as pd
import os

def save_password():
    website_name = input("Website: ")
    username = input("Username: ")
    password = input("Password: ")

    # 构建单行 DataFrame(注意字段名与首行完全一致)
    new_entry = pd.DataFrame({
        "Website": [website_name],
        "Username/Email": [username],
        "Password": [password]
    })

    file_path = "MyPassword_test.txt"
    if not os.path.isfile(file_path):
        # 首次创建:直接写入,不带分隔符歧义(默认逗号即可,或统一用分号)
        new_entry.to_csv(file_path, index=False, sep=";")  # 显式指定分隔符
        print("✅ First entry saved:")
        print(new_entry)
    else:
        # 后续追加:必须用相同分隔符读取 + concat 合并
        try:
            existing_data = pd.read_csv(file_path, sep=";")  # 关键!指定 sep=";"
        except pd.errors.EmptyDataError:
            existing_data = pd.DataFrame(columns=["Website", "Username/Email", "Password"])

        # 安全合并(自动对齐列名,缺失列补 NaN;ignore_index=True 重置行索引)
        combined_data = pd.concat([existing_data, new_entry], ignore_index=True)
        combined_data.to_csv(file_path, index=False, sep=";")
        print("✅ Entry appended. Current data:")
        print(combined_data)

# 示例调用(可循环多次验证结构稳定性)
# save_password()
# save_password()
# save_password()

? 关键注意事项:

  • 分隔符必须全程统一:to_csv(sep=";") 与 read_csv(sep=";") 必须成对出现;若无需分号,建议全程用默认逗号(更兼容标准 CSV)。
  • 列名严格一致:首次写入的列名(如 "Username/Email")必须与后续 new_entry 的列名完全相同(包括空格、大小写、斜杠),否则 concat 会创建新列或填充 NaN。
  • 避免手动拼接字符串写入:不要用 f"..." 拼接 CSV 行——易引入格式错误、转义问题及安全风险(如密码含逗号/分号)。
  • 生产环境建议升级:对敏感信息(如密码)应加密存储(如 cryptography 库),而非明文 CSV;文件权限需设为仅当前用户可读(os.chmod(file_path, 0o600))。

通过以上修正,无论执行第 1 次还是第 100 次追加,DataFrame 结构始终稳定,列对齐准确,CSV 文件可被 Excel、Pandas 或其他工具无误解析。

热门AI工具

更多
UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

相关专题

更多
python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

1891

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

5224

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

1829

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

31577

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

3727

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

3747

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

1263

2023.08.11

python合并两个列表
python合并两个列表

Python是一种强大的编程语言,具有许多方便的功能和工具。在Python中,有多种方法可以合并两个列表。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

616

2023.08.10

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

0

2026.11.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn