我想要创建一个新的csv "Result.csv“,它包含一个csv "New.csv”中没有出现在另一个csv "Old.csv“中的行。
例如,
Old.csv
美国密西根州
ron(美国)密西根州
简-总部-俄亥俄州
New.csv
美国密西根州
简-总部-俄亥俄州
ron-气候变化技术方案
jack(美国)公司(美国)
Result.csv
ron-气候变化技术方案
jack(美国)公司(美国)
我在python中尝试了下面的代码,这是我在另一个问题上读到的,但似乎行不通,并给出了错误的输出。下面的代码有什么问题吗?除了下面的代码,还有其他的选择吗?熊猫可以选择吗?
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()发布于 2018-06-15 16:26:12
假设:
old.csv
john,Michigan,2018
ron,Michigan,2018
jane,Ohio,2017new.csv
john,Michigan,2018
jane,Ohio,2017
ron,Michigan,2017
jack,New York,2018只使用pandas:
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
ron,Michigan,2017
jack,New York,2018https://stackoverflow.com/questions/50877681
复制相似问题