兩個list根據相同欄位合併

一、前言

在實際的開發過程中,我們經常會遇到需要把兩個list根據相同欄位進行合併的情況。比如,在一個訂單系統中,有一個包含訂單號和訂單狀態的list和一個包含訂單號和訂單金額的list,我們需要把這兩個list合併為一個完整的訂單list,其中包括訂單號、訂單狀態和訂單金額。本文將從多個方面詳細說明如何實現這一功能。

二、小標題:使用Python中的pandas庫進行合併

Python中的pandas庫提供了非常方便的合併list的功能,可以根據一個或多個相同的欄位進行合併,下面是示例代碼:

import pandas as pd

df1 = pd.DataFrame({'訂單號': ['A01', 'A02', 'A03', 'A04'], '訂單狀態': ['已付款', '已發貨', '已收貨', '已取消']})
df2 = pd.DataFrame({'訂單號': ['A01', 'A02', 'A03', 'A05'], '訂單金額': ['100', '200', '300', '400']})

df = pd.merge(df1, df2, on='訂單號', how='left')

上述代碼中,我們先使用pd.DataFrame函數創建df1和df2兩個DataFrame對象,其中df1包含訂單號和訂單狀態兩個欄位,而df2包含訂單號和訂單金額兩個欄位。然後使用pd.merge函數進行合併,on參數指定根據哪個欄位進行合併,how參數指定一些合併的方法,如「left」表示左連接。最終得到的df包含了訂單號、訂單狀態和訂單金額三個欄位。使用pandas合併list的方法非常簡單,並且可以處理大型的數據集。

三、小標題:使用Python中的zip函數進行合併

如果不想使用pandas庫,我們也可以使用Python中的zip函數實現兩個list根據相同欄位合併的功能。下面是示例代碼:

list1 = [{'訂單號': 'A01', '訂單狀態': '已付款'}, {'訂單號': 'A02', '訂單狀態': '已發貨'}, {'訂單號': 'A03', '訂單狀態': '已收貨'}, {'訂單號': 'A04', '訂單狀態': '已取消'}]
list2 = [{'訂單號': 'A01', '訂單金額': '100'}, {'訂單號': 'A02', '訂單金額': '200'}, {'訂單號': 'A03', '訂單金額': '300'}, {'訂單號': 'A05', '訂單金額': '400'}]

merged_list = []
for dict1 in list1:
    for dict2 in list2:
        if dict1['訂單號'] == dict2['訂單號']:
            dict1.update(dict2)
            merged_list.append(dict1)
            break

上述代碼中,我們首先定義了兩個包含訂單號和其他欄位的list,然後使用兩個for循環分別遍歷這兩個list,根據訂單號進行匹配,如果訂單號相同,則合併兩個字典,最終得到一個包含所有欄位的字典,並添加到merged_list列表中。這種方法比使用pandas庫更加靈活,但也需要編寫更多的代碼。

四、小標題:使用SQL進行合併

如果我們將兩個list看作是兩個表,那麼也可以使用SQL進行合併。下面是以MySQL為例的示例代碼:

import MySQLdb

conn = MySQLdb.connect(host="localhost",user="root",passwd="password",db="test",charset="utf8")
cursor = conn.cursor()

cursor.execute("CREATE TABLE table1(id INT PRIMARY KEY AUTO_INCREMENT, 訂單號 VARCHAR(255), 訂單狀態 VARCHAR(255))")
cursor.execute("INSERT INTO table1(訂單號, 訂單狀態) VALUES('A01', '已付款'), ('A02', '已發貨'), ('A03', '已收貨'), ('A04', '已取消') ")
cursor.execute("CREATE TABLE table2(id INT PRIMARY KEY AUTO_INCREMENT, 訂單號 VARCHAR(255), 訂單金額 VARCHAR(255)) ")
cursor.execute("INSERT INTO table2(訂單號, 訂單金額) VALUES('A01', '100'), ('A02','200'), ('A03','300'), ('A05', '400') ")
cursor.execute("SELECT * FROM table1 LEFT JOIN table2 ON table1.訂單號=table2.訂單號")

result = cursor.fetchall()
print(result)

cursor.close()
conn.commit()
conn.close()

上述代碼中,我們首先建立了與MySQL資料庫的連接,並創建了兩個包含訂單號和其他欄位的表,分別是table1和table2。然後向這兩個表中插入數據,使用LEFT JOIN關鍵字和ON子句連接這兩個表進行合併。最終得到包含所有欄位的結果集,使用fetchall方法讀取所有的數據行。

五、小標題:綜合比較

綜合上述三種方法,我們可以看到使用pandas庫進行合併最為簡單,只需要一行代碼即可實現,而且能夠處理大型的數據集。如果不想使用第三方庫,則可以使用zip函數,這種方法比較靈活,但需要編寫更多的代碼。如果數據存儲在MySQL等資料庫中,則可以使用SQL進行合併,這種方法要比使用Python代碼運行速度更快,在處理大型數據集時更具優勢。

六、小標題:總結

本文從多個方面詳細介紹了如何將兩個list根據相同欄位進行合併,分別使用了pandas庫、zip函數和MySQL等SQL進行了實現。不同的場景可以選擇不同的方法,最終都能夠得到一個包含所有欄位的結果集。

原創文章,作者:CZSR,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/132801.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
CZSR的頭像CZSR
上一篇 2024-10-03 23:54
下一篇 2024-10-03 23:54

相關推薦

  • 利用Python實現兩個鏈表合併為一個有序鏈表

    對於開發工程師來說,實現兩個鏈表合併為一個有序鏈表是必須掌握的技能之一。Python語言在鏈表處理上非常便利,本文將從多個方面詳細闡述如何利用Python實現兩個鏈表合併為一個有序…

    編程 2025-04-29
  • Tensor to List的使用

    Tensor to List是TensorFlow框架提供的一個非常有用的函數,在很多的深度學習模型中都會用到。它的主要功能是將TensorFlow中的張量(Tensor)轉換為P…

    編程 2025-04-29
  • Python根據表格數據生成折線圖

    本文將介紹如何使用Python根據表格數據生成折線圖。折線圖是一種常見的數據可視化圖表形式,可以用來展示數據的趨勢和變化。Python是一種流行的編程語言,其強大的數據分析和可視化…

    編程 2025-04-29
  • Python定義兩個列表的多面探索

    Python是一種強大的編程語言,開放源代碼,易於學習和使用。通過Python語言,我們可以定義各種數據類型,如列表(list)。在Python中,列表(list)在處理數據方面起…

    編程 2025-04-29
  • Python兩個線程交替列印1到100

    這篇文章的主題是關於Python多線程的應用。我們將會通過實際的代碼,學習如何使用Python兩個線程交替列印1到100。 一、創建線程 在Python中,我們可以使用Thread…

    編程 2025-04-28
  • leveldb和unqlite:兩個高性能的資料庫存儲引擎

    本文將介紹兩款高性能的資料庫存儲引擎:leveldb和unqlite,並從多個方面對它們進行詳細的闡述。 一、leveldb:輕量級的鍵值存儲引擎 1、leveldb概述: lev…

    編程 2025-04-28
  • Python中兩個冒號連用

    Python中的「兩個冒號」是指「::」,它在Python中有著很多用途,包括循環語句、切片、函數註解等。下面我們從多個方面來詳細闡述Python中兩個冒號的用法。 一、循環語句f…

    編程 2025-04-28
  • 如何使用Python將輸出值賦值給List

    對標題進行精確、簡明的解答:本文將從多個方面詳細介紹Python如何將輸出的值賦值給List。我們將分步驟進行探討,以便讀者更好地理解。 一、變數類型 在介紹如何將輸出的值賦值給L…

    編程 2025-04-28
  • 兩個域名指向同一IP不同埠打開不同網頁的實現方法

    本文將從以下幾個方面詳細闡述兩個域名指向同一個IP不同埠打開不同網頁的實現方法。 一、域名解析 要實現兩個域名指向同一個IP不同埠,首先需要進行域名解析。在域名解析的時候,將這…

    編程 2025-04-28
  • Python List查找用法介紹

    在Python中,list是最常用的數據結構之一。在很多場景中,我們需要對list進行查找、篩選等操作。本文將從多個方面對Python List的查找方法進行詳細的闡述,包括基本查…

    編程 2025-04-28

發表回復

登錄後才能評論