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

Pandas DataFrame重复写入CSV问题及时间戳列需求求助

问题修复与功能增强方案

原代码问题分析

  1. 去重逻辑错误:原dups函数用drop_duplicates(keep=False)会移除所有存在重复的行(包括主文件中已有的原始行),而非仅保留新数据中未重复的部分,导致第三次写入时逻辑混乱,出现重复或错误追加。
  2. 缺少时间戳字段:未自动记录数据录入的时间信息。

修改后的完整代码

import pandas as pd
from datetime import datetime

# 示例学生数据(可替换为你的输入数据)
student_dict = {
    "ID": [101, 102, 103, 104, 105],
    "Student": ["AAA", "BBB", "CCC", "DDD", "EEE"],
    "Mark": [50, 100, 99, 60, 80],
    "Address": ["St.AAA", "St.BBB", "St.CCC", "St.DDD", "St.EEE"],
    "PhoneNo": [1111111111, 2222222222, 3333333333, 4444444444, 5555555555]
}

# 生成DataFrame并添加录入时间戳
df = pd.DataFrame(student_dict)
# 添加时间戳,格式为年-月-日 时:分:秒
df["Entry_Timestamp"] = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

fName = "Student_CSVresult.csv"

try:
    # 读取已存在的主文件
    existing_data = pd.read_csv(fName)
    print("当前主文件数据:")
    print(existing_data)
    
    # 筛选新数据中未在主文件出现过的行(以ID作为唯一标识)
    # 如果需要整行判断重复,可改为:~df.apply(tuple, axis=1).isin(existing_data.apply(tuple, axis=1))
    new_unique_rows = df[~df["ID"].isin(existing_data["ID"])]
    
    if not new_unique_rows.empty:
        print("\n待追加的新数据:")
        print(new_unique_rows)
        # 追加到主文件,不覆盖,不写表头
        new_unique_rows.to_csv(fName, mode="a", index=False, header=False)
        print("新数据已成功追加")
    else:
        print("无新的不重复数据需要追加")
        
except FileNotFoundError:
    # 文件不存在时,直接写入带时间戳的完整数据
    print("主文件不存在,创建新文件并写入初始数据")
    df.to_csv(fName, index=False)
    print("初始数据已写入新文件")
    
except Exception as e:
    print(f"发生错误:{e}")

关键修改说明

  1. 添加时间戳:
    • 使用datetime.now().strftime()生成格式化的当前时间,作为Entry_Timestamp列添加到新数据中,确保每条记录都有录入时间。
  2. 精准去重逻辑:
    • 以ID作为唯一标识(学生ID应为唯一值),通过~df["ID"].isin(existing_data["ID"])筛选出主文件中没有的新记录,避免重复追加。
    • 如果需要基于整行内容判断重复,可替换为注释中的整行匹配逻辑。
  3. 安全追加:
    • 仅当存在新的不重复数据时才执行追加操作,避免写入空内容。
    • 追加时设置header=False,防止重复写入表头。

测试验证

  • 首次运行:创建文件并写入带时间戳的初始数据。
  • 第二次运行含重复ID的新数据:仅追加ID为106、107的新记录,原有记录不重复。
  • 第三次运行初始DataFrame:检测到所有ID已存在,无数据追加,不会出现重复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 04:30:54