首頁 >後端開發 >Python教學 >如何有效率地創造 Pandas DataFrame 的笛卡兒積?

如何有效率地創造 Pandas DataFrame 的笛卡兒積?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-11 17:59:15978瀏覽

How to Efficiently Create a Cartesian Product of Pandas DataFrames?

Pandas 中的笛卡爾積:最佳實踐和解決方案

使用Pandas 資料幀時,通常需要建立兩個或多個資料幀的笛卡爾積。這對於組合來自多個來源的資料或探索不同變數之間的關係來說是一個有用的操作。

交叉合併方法

在最新版本的Pandas (>= 1.2) 中,交叉合併方法

import pandas as pd

df1 = pd.DataFrame({'col1': [1, 2], 'col2': [3, 4]})
df2 = pd.DataFrame({'col3': [5, 6]})

df_cartesian = pd.merge(df1, df2, how='cross')
merge 方法提供了一種計算兩個資料幀的笛卡爾積的便捷方法。要使用此方法,只需使用how='cross' 參數呼叫合併函數:

產生的資料幀df_cartesian 將包含df1 和df2 行的所有組合,從而產生笛卡爾積.

在合併中使用重複鍵

df1 = pd.DataFrame({'key': [1, 1], 'col1': [1, 2], 'col2': [3, 4]})
df2 = pd.DataFrame({'key': [1, 1], 'col3': [5, 6]})

df_cartesian = pd.merge(df1, df2, on='key')[['col1', 'col2', 'col3']]
對於Pandas 之前的版本1.2中,有必要使用稍微不同的方法來創建笛卡爾積。這種方法涉及在一個資料幀中使用重複的鍵,然後合併這些鍵:

透過建立一個為兩個資料幀中的每一行重複的鍵,我們可以透過合併來有效地執行笛卡爾積

結論

無論您使用的是Pandas >= 1.2還是在早期版本中,上述方法提供了創建兩個或多個資料幀的笛卡爾積的有效方法。根據您使用的 Pandas 的特定版本,一種方法可能比另一種方法更方便或更有效。

以上是如何有效率地創造 Pandas DataFrame 的笛卡兒積?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn