我需要對比兩個相似性很大的表格
結構性區別和內容性區別
新表格可能會莫名其妙多一行,可能會少一行,內容可能發生異常。
我借用網站其他人的解決思路(暫時沒有link,如果誰看到了的dm我,我將會把來源附上)
本人沒有cs背景,都是自己摸索找資源的。
先提前感謝大家了/(ㄒoㄒ)/~~
目前結構性區別有output已經ok並成功寫入新文件新的sheet
問題主要出現在把結構性差異排除後,對剩余的數據對比,看是否有內容性的差異
相關代碼如下:
import numpy as np
import pandas as pd
old=pd.read_excel(io=r'sample_old.xlsx',sheet_name='sheet1', na_values=['NA'])
new=pd.read_excel(io=r'Csample_nouveau.xlsx', sheet_name='sheet1', na_values=['NA'])
old['version'] = "old"
new['version'] = "new"
old_comptetotal=set(old['N_Compte'])
new_comptetotal=set(new['N_Compte'])
suppr_compte=old_comptetotal-new_comptetotal
ajoute_compte=new_comptetotal-old_comptetotal
print(suppr_compte)
print(ajoute_compte)
all_data=pd.concat([old,new],ignore_index=True)
changes=all_data.drop_duplicates(subset=old.columns,keep='last')
print(changes)
cpt_double=changes[changes['N_Compte'].duplicated()==True]['N_Compte'].tolist()
print(cpt_double)
double=changes[changes['N_Compte'].isin(cpt_double)]
print(double)
change_new=double[(double["version"]=="new")]
change_old=double[(double["version"]=="old")]
print(change_new)
print(change_old)
change_new=change_new.drop(["version"],axis=1)
change_old=change_old.drop(["version"],axis=1)
print(change_new)
print(change_old)
df_all_changes=pd.concat([change_new,change_old],axis='columns',keys=['old','new'],join='outer')
df_all_changes=df_all_changes.swaplevel(axis='columns')[change_new.columns[0:]]
print(df_all_changes)
後面沒有代碼了,因為我解決不了了
問題
最後print出來發現old和new沒有區別的行也被print了,我想去除沒有差異的那一行。
如圖我highlight部分,每一列名稱下的old new都是沒有差異的
但是我不可能單獨drop那一行,這是個樣本表格,真實表格很多數據,有差異的概率比較小,因此寫入新excel應該是有差異的那幾行以便於更改。
**我的解答思路和嘗試過的方法 **
我嘗試highlight diff,然後條件篩出有顏色的那一行,但是本人python知識淺薄,highlight出了difference但是那一行還在/(ㄒoㄒ)/~~。
我想要達到的結果
有沒有highlight不重要,我只要內容有差異的行,且格式是每個列名下有old 和new對比。這樣一眼看的出差異
如圖是我想要被寫入的樣子