每天我都会收到一个pandas数据框,其中有五列,分别称为column1, column2, column3, column4, column5。我想将以前未收到的行添加到保留唯一行的文件中,称为known_data.csv. 为此,我编写了一些代码
known_data.csv从名为的数据帧加载数据existing_data
existing_data向df添加一个名为“existing”的新列
将旧数据框与五列上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)
Run Code Online (Sandbox Code Playgroud)
不幸的是,这段代码无法按预期运行:补码永远不会为空。即使当我收到已经记录在 中的数据时known_data.csv, 的一些行new_data仍然会被附加到文件中。
问题:我做错了什么?我怎么解决这个问题?这与我读取文件和写入文件的方式有关吗?
编辑:existing添加一个名为数据框的新列existing_data可能不是检查existing_data …