最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

我們假設(shè)需要比較的兩個(gè) CSV 文件的標(biāo)題為 file1.csv 和 file2.csv。 您可以根據(jù)需要重命名文件。

還請(qǐng)?jiān)谙旅娼o出的代碼片段中適當(dāng)?shù)靥鎿Q文件名。

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

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 的解決方案比較兩個(gè) CSV 文件

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

Python 的潛在效率使這種比較相當(dāng)有效,盡管它看起來(lái)像。

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)

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

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

1,3,4,5,6,1

2,3,1,4,1,5

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

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

python3 -m pip install csv-diff

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

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

運(yùn)行此命令將在您的終端上顯示差異。

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

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 腳本的一部分,您可以編寫類似于以下內(nèi)容的腳本。

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 比較兩個(gè) CSV 文件

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

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))

請(qǐng)注意,在 read_csv 方法中,參數(shù) header=None 被輸入,因?yàn)槲覀兊臏y(cè)試文件沒有任何標(biāo)題。 如果您的文件有標(biāo)題,您可以使用以下方法讀取它:pd.read_csv("file1.csv"),其中 file1.csv 將被您的文件替換。

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

上面的 Python 腳本應(yīng)該生成如下輸出:

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 旁邊的行僅表示索引。

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

相關(guān)文章

  • Python?urllib庫(kù)的使用指南詳解

    Python?urllib庫(kù)的使用指南詳解

    所謂網(wǎng)頁(yè)抓取,就是把URL地址中指定的網(wǎng)絡(luò)資源從網(wǎng)絡(luò)流中讀取出來(lái),保存到本地。?在Python中有很多庫(kù)可以用來(lái)抓取網(wǎng)頁(yè),本文將講解其中的urllib庫(kù),感興趣的可以了解一下
    2022-04-04
  • Python利用PyPDF2快速拆分PDF文檔

    Python利用PyPDF2快速拆分PDF文檔

    很多時(shí)候需要拆分PDF,但是大部分需要付費(fèi),免費(fèi)的限制很多,本文就使用Python快速拆分PDF文檔,具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-07-07
  • 詳解python中Numpy的屬性與創(chuàng)建矩陣

    詳解python中Numpy的屬性與創(chuàng)建矩陣

    這篇文章給大家分享了關(guān)于python中Numpy的屬性與創(chuàng)建矩陣的相關(guān)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。
    2018-09-09
  • python爬蟲之selenium模塊

    python爬蟲之selenium模塊

    本文詳細(xì)講解了python爬蟲之selenium模塊,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • Django簽到系統(tǒng)實(shí)現(xiàn)示例

    Django簽到系統(tǒng)實(shí)現(xiàn)示例

    本文主要介紹了Django簽到系統(tǒng)實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-09-09
  • python中numpy 數(shù)組過濾詳解

    python中numpy 數(shù)組過濾詳解

    這篇文章主要介紹了python中numpy 數(shù)組過濾詳解的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • Python完成哈夫曼樹編碼過程及原理詳解

    Python完成哈夫曼樹編碼過程及原理詳解

    這篇文章主要介紹了Python完成哈夫曼樹編碼過程及原理詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • 淺談Python if的高級(jí)功能

    淺談Python if的高級(jí)功能

    本文主要介紹了Python if的高級(jí)功能,包括if xxx、if xxx==xxx和if xxx is xxx的用法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-05-05
  • python從入門到實(shí)踐之組合數(shù)據(jù)類型

    python從入門到實(shí)踐之組合數(shù)據(jù)類型

    這篇文章主要為大家介紹了python組合數(shù)據(jù)類型,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01
  • python使用requests庫(kù)實(shí)現(xiàn)輕松發(fā)起HTTP請(qǐng)求

    python使用requests庫(kù)實(shí)現(xiàn)輕松發(fā)起HTTP請(qǐng)求

    requests是Python中一個(gè)非常流行的用于發(fā)送HTTP請(qǐng)求的第三方庫(kù),它提供了簡(jiǎn)潔的API,使得發(fā)送各種HTTP請(qǐng)求變得非常容易,下面我們來(lái)看看具體實(shí)現(xiàn)方法吧
    2025-01-01

最新評(píng)論

台湾省| 双江| 合阳县| 光山县| 彭州市| 武功县| 绥棱县| 兖州市| 通州市| 济南市| 郧西县| 万荣县| 万荣县| 鄱阳县| 吴忠市| 响水县| 四川省| 和田县| 永安市| 北川| 卢氏县| 饶平县| 金湖县| 松原市| 乐山市| 临泉县| 云浮市| 松潘县| 吉隆县| 湾仔区| 同江市| 清河县| 阿克陶县| 高唐县| 合肥市| 高淳县| 沙田区| 白银市| 元谋县| 慈利县| 阜平县|