我有兩個 csv 檔案,必須找到兩個檔案的差異并在 sheet1 中生成輸出檔案 - txt1.csv 和 sheet2 的差異資料 - txt2.csv 的差異資料。請給我建議。
樣本輸入:
txt1.csv

txt2.csv

代碼
with open('txt1.csv', 'r') as t1, open('txt2.csv', 'r') as t2:
fileone = t1.readlines()
filetwo = t2.readlines()
with open('update.csv', 'w') as outFile:
for line in filetwo:
if line not in fileone:
outFile.write(line)
with open('update1.csv', 'w') as outFile:
for line in fileone:
if line not in filetwo:
outFile.write(line)
預期輸出:
在表 1

在表 2

筆記 :
當輸入檔案太大時,上面的代碼執行很慢
uj5u.com熱心網友回復:
您可以嘗試以下方法。
資料集:
df1=pd.DataFrame({"A":[1,2,3,4],"B":[5,6,7,8]})
df2=pd.DataFrame({"A":[1, 2],"B":[2,9]})
輸出1:
df1[~df1.apply(tuple,1).isin(df2.apply(tuple,1))].reset_index(drop=True)
A
0 3
1 4
輸出2:
df2[~df2.apply(tuple,1).isin(df1.apply(tuple,1))].reset_index(drop=True)
A
0 8
1 9
在您的情況下,例如:
df1 = pd.read_csv("txt1.csv")
df2 = pd.read_csv("txt2.csv")
delta1 = df1[~df1.apply(tuple,1).isin(df2.apply(tuple,1))].reset_index(drop=True)
delta2 = df2[~df2.apply(tuple,1).isin(df1.apply(tuple,1))].reset_index(drop=True)
delta1.to_csv("txt1_delta.csv", index=False)
delta2.to_csv("txt2_delta.csv", index=False)
編輯,或者如果您想在Excel 中使用多張作業表:
pip install xlsxwriter # if required
import xlsxwriter
# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter("your_output_excel.xlsx", engine="xlsxwriter")
# Write each dataframe to a different worksheet.
delta1.to_excel(writer, sheet_name="Delta1")
delta2.to_excel(writer, sheet_name="Delta2")
# Close the Pandas Excel writer and output the Excel file.
writer.save()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/410006.html
標籤:
上一篇:提高讀取csv檔案C 的速度
下一篇:csv.DictWriterwriteheader()和writerow在MicrosoftExcel中顯示時無法在CSV檔案中正確寫入希臘字符
