首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将新的csv数据与主数据进行比较,从新的csv中删除重复项,并从文件中获取清理后的csv数据

将新的csv数据与主数据进行比较,从新的csv中删除重复项,并从文件中获取清理后的csv数据
EN

Stack Overflow用户
提问于 2020-08-25 20:49:23
回答 1查看 35关注 0票数 0

我有一个包含两列的主文件,其中包含来自所有旧记录的数据。每当我获得一个包含两列的新数据文件时,我希望将其与主文件进行比较,并从新文件中删除重复的值,并从新数据中获得清理后的数据,而不更改主文件中的任何内容。

代码语言:javascript
复制
np.setdiff1d(new_file, master_file)

我已经尝试了上面的代码,但它没有给出预期的结果

EN

回答 1

Stack Overflow用户

发布于 2020-08-25 21:09:27

这是一个非常快速的解决方案,它对文件中的变化不是很健壮,而且它有一些迭代。但是如果它是相对较小的文件并且是一次性的,这是可行的。

代码语言:javascript
复制
test_master = pd.read_csv('data/test_master.csv')
test_new = pd.read_csv('data/test_new.csv')

drop_these = []

for i,d in enumerate(zip(test_new.iloc[:,0], test_new.iloc[:,1])):
    if d in zip(test_master.iloc[:,0], test_master.iloc[:,1]):
        drop_these.append(i)
        
test_new.drop(drop_these, inplace=True)

另外,如果你不想使用pandas,这也不是最好的解决方案:

代码语言:javascript
复制
import csv

master_file = []
with open("data/test_master.csv", "r") as f:
    writer = csv.reader(f)
    for row in writer:
        master_file.append(row)

new_file = []
with open("data/test_new.csv", "r") as f:
    writer = csv.reader(f)
    for row in writer:
        if row not in master_file:
            new_file.append(row)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63579222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档