首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用一个csv中不存在于另一个csv中的行创建第三个csv

使用一个csv中不存在于另一个csv中的行创建第三个csv
EN

Stack Overflow用户
提问于 2018-06-15 14:33:20
回答 1查看 58关注 0票数 0

我想要创建一个新的csv "Result.csv“,它包含一个csv "New.csv”中没有出现在另一个csv "Old.csv“中的行。

例如,

Old.csv

美国密西根州

ron(美国)密西根州

简-总部-俄亥俄州

New.csv

美国密西根州

简-总部-俄亥俄州

ron-气候变化技术方案

jack(美国)公司(美国)

Result.csv

ron-气候变化技术方案

jack(美国)公司(美国)

我在python中尝试了下面的代码,这是我在另一个问题上读到的,但似乎行不通,并给出了错误的输出。下面的代码有什么问题吗?除了下面的代码,还有其他的选择吗?熊猫可以选择吗?

代码语言:javascript
复制
with open('Old.csv', 'r') as f1:
    old = f1.readlines()

with open('New.csv', 'r') as f2:
    new = f2.readlines()

result = open("Result.csv", "w+")

for data in new:

    if data not in old:
        result.write(data)
result.close()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-15 16:26:12

假设:

old.csv

代码语言:javascript
复制
john,Michigan,2018
ron,Michigan,2018
jane,Ohio,2017

new.csv

代码语言:javascript
复制
john,Michigan,2018
jane,Ohio,2017
ron,Michigan,2017
jack,New York,2018

只使用pandas

代码语言:javascript
复制
import pandas as pd

#open old csv as dataframe
old_df=pd.read_csv("old.csv",header=None)
#open new csv as dataframe
new_df=pd.read_csv("new.csv",header=None)
#join them
join_df=old_df.append(new_df,ignore_index=True)
#remove all duplicates
result_df=join_df.drop_duplicates(subset=None,keep=False)
#remove all present in old
result_df = result_df[~result_df.isin(old_df)].dropna()
#change float year to int
result_df[2] = result_df[2].astype(int)
#save as csv
result_df.to_csv("result.csv",header=None,index=None)

其中:

result.csv

代码语言:javascript
复制
ron,Michigan,2017
jack,New York,2018
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50877681

复制
相关文章

相似问题

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