亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python 比較兩個 CSV 文件的三種方法并打印出差異

 更新時間:2023年06月08日 09:42:35   作者:跡憶客  
這篇文章主要介紹了Python 比較兩個 CSV 文件并打印出差異,本文將討論比較兩個 CSV 文件的各種方法,我們將包括執(zhí)行此操作的最“Pythonic”方式和可幫助簡化此任務的外部 Python 模塊,需要的朋友可以參考下

本文將討論比較兩個 CSV 文件的各種方法。 我們將包括執(zhí)行此操作的最“Pythonic”方式和可幫助簡化此任務的外部 Python 模塊。

最后,我們將包括一種使用 Pandas DataFrames 識別 CSV 文件差異的方法。

我們假設需要比較的兩個 CSV 文件的標題為 file1.csv 和 file2.csv。 您可以根據需要重命名文件。

還請在下面給出的代碼片段中適當地替換文件名。

出于示例目的,我們的文件設置如下:

file1.csv:

1,2,3,4,5,6
4,5,6,7,8,9
1,3,4,5,6,1

file2.csv:

1,2,3,4,5,6
4,5,6,7,8,9
2,3,1,4,1,5

方法 1:使用最 Pythonic 的解決方案比較兩個 CSV 文件

在這個方法中,我們將文件的內容讀入兩個列表,遍歷其中一個列表并檢查每一行是否存在于第二個列表中。 從邏輯上講,這是一個非常簡單的解決方案。

Python 的潛在效率使這種比較相當有效,盡管它看起來像。

with open('file1.csv', 'r') as file1, open('file2.csv', 'r') as file2:
    f1_contents = file1.readlines()
    f2_contents = file2.readlines()
for line in f1_contents:
    if line not in f2_contents:
        print(line)
for line in f2_contents:
    if line not in f1_contents:
        print(line)

上面的代碼片段會將不同的行打印到您的終端。

在我們的測試用例中,我們得到以下輸出。

1,3,4,5,6,1

2,3,1,4,1,5

方法 2:使用 csv-diff - 外部模塊比較兩個 CSV 文件

首先,在終端中使用以下命令安裝模塊。

python3 -m pip install csv-diff

安裝后,您無需編寫 Python 腳本。 您可以使用以下命令直接在終端中運行它。

csv-diff file1.csv file2.csv --key=id

運行此命令將在您的終端上顯示差異。

在我們的測試用例中,我們得到以下輸出。

1 row added, 1 row removed

1 row added

1: 2
2: 3
3: 1
4: 4
5: 1
6: 5

1 row removed

1: 1
2: 3
3: 4
4: 5
5: 6
6: 1

要將此模塊用作 Python 腳本的一部分,您可以編寫類似于以下內容的腳本。

from csv_diff import load_csv, compare
difference = compare(
    load_csv(open("file1.csv")),
    load_csv(open("file2.csv"))
)
print(difference)

輸出如下。

{'added': [{'1': '2', '2': '3', '3': '1', '4': '4', '5': '1', '6': '5'}], 'removed': [{'1': '1', '2': '3', '3': '4', '4': '5', '5': '6', '6': '1'}], 'changed': [], 'columns_added': [], 'columns_removed': []}

方法 3:使用 Pandas DataFrames 比較兩個 CSV 文件

以下腳本可以為您執(zhí)行此任務。

import pandas as pd
import sys
import csv
def dataframe_difference(df1: pd.DataFrame, df2: pd.DataFrame, which=None):
    comparison_df = df1.merge(
        df2,
        indicator=True,
        how='outer'
    )
    if which is None:
        diff_df = comparison_df[comparison_df['_merge'] != 'both']
    else:
        diff_df = comparison_df[comparison_df['_merge'] == which]
    return diff_df
if __name__ == "__main__":
    df1 = pd.read_csv("file1.csv", header=None)
    df2 = pd.read_csv("file2.csv", header=None)
    print(dataframe_difference(df1, df2))

請注意,在 read_csv 方法中,參數 header=None 被輸入,因為我們的測試文件沒有任何標題。 如果您的文件有標題,您可以使用以下方法讀取它:pd.read_csv("file1.csv"),其中 file1.csv 將被您的文件替換。

如果您的文件不在與腳本相同的目錄中,請?zhí)峁?CSV 文件的完整路徑。

上面的 Python 腳本應該生成如下輸出:

0 1 2 3 4 5 _merge
2 1 3 4 5 6 1 left_only
3 2 3 1 4 1 5 right_only

left_only 和 right_only 旁邊的行包含所有差異。 _merge 旁邊的行僅表示索引。

到此這篇關于Python 比較兩個 CSV 文件并打印差異的文章就介紹到這了,更多相關Python 比較兩個 CSV 文件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • pycharm實現在子類中添加一個父類沒有的屬性

    pycharm實現在子類中添加一個父類沒有的屬性

    這篇文章主要介紹了pycharm實現在子類中添加一個父類沒有的屬性,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • python并發(fā)場景鎖的使用方法

    python并發(fā)場景鎖的使用方法

    這篇文章主要介紹了python并發(fā)場景鎖的使用方法,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • Python實現模擬登錄網易郵箱的方法示例

    Python實現模擬登錄網易郵箱的方法示例

    這篇文章主要介紹了Python實現模擬登錄網易郵箱的方法,結合實例形式分析了Python基于urllib2及cookielib模塊的http請求、數據傳輸及交互相關操作技巧,需要的朋友可以參考下
    2018-07-07
  • matplotlib grid()設置網格線外觀的實現

    matplotlib grid()設置網格線外觀的實現

    這篇文章主要介紹了matplotlib grid()設置網格線外觀的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • Python3 Tkinkter + SQLite實現登錄和注冊界面

    Python3 Tkinkter + SQLite實現登錄和注冊界面

    這篇文章主要為大家詳細介紹了Python3 Tkinkter + SQLite實現登錄和注冊界面,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • python3使用騰訊企業(yè)郵箱發(fā)送郵件的實例

    python3使用騰訊企業(yè)郵箱發(fā)送郵件的實例

    今天小編就為大家分享一篇python3使用騰訊企業(yè)郵箱發(fā)送郵件的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • python操作xls使用xlwings代提openpyxl基礎

    python操作xls使用xlwings代提openpyxl基礎

    這篇文章主要為大家介紹了python操作xls使用xlwings代提openpyxl示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • python實現AdaBoost算法的示例

    python實現AdaBoost算法的示例

    這篇文章主要介紹了python實現AdaBoost算法的示例,幫助大家更好的理解和了解機器學習算法,感興趣的朋友可以了解下
    2020-10-10
  • Python音樂爬蟲完美繞過反爬

    Python音樂爬蟲完美繞過反爬

    這篇文章主要介紹了Python音樂爬蟲完美繞過反爬的過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • 關于Python中的閉包詳解

    關于Python中的閉包詳解

    大家好,本篇文章主要講的是關于Python中的閉包詳解,感興趣的同學感快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01

最新評論