gpt4 book ai didi

python-3.x - 仅将数据框中的新行添加到 csv 文件

转载 作者:行者123 更新时间:2023-12-01 13:12:14 25 4
gpt4 key购买 nike

每天我都会收到一个 pandas具有名为 column1 的五列的数据框, column2 , column3 , column4 , column5 .我想将以前没有收到的行添加到我保留唯一行的文件中,名为 known_data.csv .为了做到这一点,我写了一些代码,应该

  • known_data.csv 加载数据作为名为 existing_data 的数据帧
  • existing_data 添加一个名为“现有”的新列df
  • 合并旧的 existing_data带有名为 new_data 的数据帧的数据帧在五列
  • 检查是否new_data通过查看 merge[merge.existing.isnull()] 包含新行(新数据与现有数据的补充)
  • 将新行附加到 known_data.csv文件

  • 我的代码看起来像这样
    existing_data = pd.read_csv("known_data.csv")

    existing_data['existing'] = 'yes'

    merge_data = pd.merge(new_data, existing_data, on = ['column1', 'column2', 'column3', 'column4', 'column5'], how = 'left')

    complement = merge_data[merge_data.existing.isnull()]

    del complement['existing']

    complement.to_csv("known_data.csv", mode='a', index=False,
    header=False)
    不幸的是,这段代码没有按预期运行:补码永远不会为空。即使我收到已经记录在 known_data.csv 中的数据, new_data的一些行无论如何都被附加到文件中。
    问题:我究竟做错了什么?我怎么解决这个问题?它与我读取文件和写入文件的方式有关吗?
    编辑:添加名为 existing 的新列到 existing_data dataframe 可能不是检查 existing_data 之间的补码的最佳方式和 new_data .如果有人有更好的建议,将不胜感激!
    编辑 2:问题是,尽管数据帧看起来相同,但有些值的类型不同。不知何故,这个错误只在我尝试合并新数据帧的一个子集时显示。

    最佳答案

    我认为您正在寻找的是 concat 操作,然后是删除副本。

    # Concat the two dataframes into a new dataframe holding all the data (memory intensive):
    complement = pd.concat([existing_data, new_data], ignore_index=True)

    # Remove all duplicates:
    complement.drop_duplicates(inplace=True, keep=False)

    这将首先创建一个包含所有旧数据和新数据的数据框,然后在第二步中删除所有重复条目。您还可以指定某些列来仅比较重复值!

    请参阅此处的文档:

    连接
    https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.concat.html

    drop_duplicates
    https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.drop_duplicates.html

    关于python-3.x - 仅将数据框中的新行添加到 csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59093445/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com