如何比較兩個 csv,從中尋找file_1.csv沒有重復的行file_2.csv并將其打印到文件中?(熊貓打算使用):import pandas as pdoriginal = pd.read_csv('file_1.csv', sep=';')backup = pd.read_csv('file_2.csv', sep=';')n = pd.concat([original,backup], axis=0)n.drop_duplicates(keep='first', inplace=True)n.to_csv('diff.csv', sep=';')File_1.csvA00;A01;B01A10;A11;B12A20;A21;B22....File_2.csv A00;A01;B01A20;A21;B22diff.csv [Real]A00;A01;B01A20;A21;B22diff.csv [Expected]A10;A11;B12這讓我得到了兩個文件之間重復的所有行,而不是 file_1 中 file_2 中缺少的行。這些是大文件和大行數(shù)。謝謝
1 回答

料青山看我應如是
TA貢獻1772條經(jīng)驗 獲得超8個贊
pd.concat在這里不起作用,因為您無法判斷結(jié)果中存在的行是來自原始行還是來自備份。相反,您應該pd.merge在所有列上使用 with indicator=True,它基本上執(zhí)行外部聯(lián)接,同時告訴您每一行是否都存在于兩者中DataFrames:
>>> merged = df1.merge(df2, how='outer', on=list(df1.columns), indicator=True)
>>> merged
0 1 2 _merge
0 A00 A01 B01 both
1 A10 A11 B12 left_only
2 A20 A21 B22 both
然后我們可以過濾并刪除該_merge列以獲得我們期望的結(jié)果:
>>> result = merged[merged['_merge'] == 'left_only'].drop(columns=['_merge'])
>>> result
0 1 2
1 A10 A11 B12
添加回答
舉報
0/150
提交
取消