」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何同時有效率地將多個欄位新增至 Pandas DataFrame ?

如何同時有效率地將多個欄位新增至 Pandas DataFrame ?

發佈於2024-11-08
瀏覽:867

How to Efficiently Add Multiple Columns to a Pandas DataFrame Simultaneously?

同時向Pandas DataFrame 添加多個列

在Pandas 資料操作中,有效地向DataFrame 添加多個新列可能是一項需要優雅解決方案的任務。雖然使用帶有等號的列列表語法的直覺方法可能看起來很簡單,但它可能會導致意外的結果。

挑戰

如提供的範例所示,以下語法無法如預期建立新欄位:

df[['column_new_1', 'column_new_2', 'column_new_3']] = [np.nan, 'dogs', 3]

這是因為在使用列列表語法時,Pandas 要求賦值的右邊是DataFrame。標量值或列表與此方法不相容。

解決方案

幾種替代方法提供了同時添加多個列的可行解決方案:

方法1:單獨分配使用迭代器解包

df['column_new_1'], df['column_new_2'], df['column_new_3'] = np.nan, 'dogs', 3

方法2:擴充單行以符合索引

df[['column_new_1', 'column_new_2', 'column_new_3']] = pd.DataFrame([[np.nan, 'dogs', 3]], index=df.index)
df[['column_new_1', 'column_new_2', 'column_new_3']] = pd.DataFrame([[np.nan, 'dogs' , 3]], index=df.index)

方法3:使用pd.concat 與臨時DataFrame 合併

df = pd.concat(
    [
        df,
        pd.DataFrame(
            [[np.nan, 'dogs', 3]], 
            index=df.index, 
            columns=['column_new_1', 'column_new_2', 'column_new_3']
        )
    ], axis=1
)
df = pd.concat( [ df, pd.DataFrame( [[np.nan, '狗', 3]], 索引=df.索引, 列=['column_new_1'、'column_new_2'、'column_new_3'] ) ],軸=1 )

方法4:使用.join

df = pd.concat(
    [
        df,
        pd.DataFrame(
            [[np.nan, 'dogs', 3]], 
            index=df.index, 
            columns=['column_new_1', 'column_new_2', 'column_new_3']
        )
    ], axis=1
)
df = df.join(pd.DataFrame( [[np.nan, '狗', 3]], 索引=df.索引, 列=['column_new_1'、'column_new_2'、'column_new_3'] ))

方法五:使用字典作為臨時DataFrame

df = pd.concat(
    [
        df,
        pd.DataFrame(
            [[np.nan, 'dogs', 3]], 
            index=df.index, 
            columns=['column_new_1', 'column_new_2', 'column_new_3']
        )
    ], axis=1
)
df = df.join(pd.DataFrame( { 'column_new_1':np.nan, 'column_new_2': '狗', 'column_new_3':3 }, 索引=df.index ))

方法6:使用.assign() 與多個列參數

df = pd.concat(
    [
        df,
        pd.DataFrame(
            [[np.nan, 'dogs', 3]], 
            index=df.index, 
            columns=['column_new_1', 'column_new_2', 'column_new_3']
        )
    ], axis=1
)
df = df.assign(column_new_1=np.nan, column_new_2= ' dogs', column_new_3=3)

方法7:建立列,然後賦值

df = pd.concat(
    [
        df,
        pd.DataFrame(
            [[np.nan, 'dogs', 3]], 
            index=df.index, 
            columns=['column_new_1', 'column_new_2', 'column_new_3']
        )
    ], axis=1
)
new_col&]方法7:建立列,然後賦值

new_cols = ['column_new_1', 'column_new&&&]new_cols = ['column_new_1', 'column_new_2', 'column_new_2', 'column_new_2', 'column_new_2', 'column_new_2', 'column_new_2', 'column_new_2' '] new_vals = [np.nan, '狗', 3] df = df.reindex(columns=df.columns.tolist() new_cols) # 新增空列 df[new_cols] = new_vals # 多列賦值適用於現有的cols
df = pd.concat(
    [
        df,
        pd.DataFrame(
            [[np.nan, 'dogs', 3]], 
            index=df.index, 
            columns=['column_new_1', 'column_new_2', 'column_new_3']
        )
    ], axis=1
)
方法8:多個順序賦值

How to Efficiently Add Multiple Columns to a Pandas DataFrame Simultaneously? 
df['column_new_1'] = np .nan df['column_new_2'] = '狗' df['column_new_3'] = 3

選擇最合適的方法將取決於 DataFrame 的大小、要新增的新列的數量以及任務的效能要求等因素。儘管如此,這些技術為 Pandas 用戶提供了多種選項,可以有效地將多個欄位新增至他們的 DataFrame 中。

最新教學 更多>
  • 如何使用自訂語句來擴展 Python 語法?
    如何使用自訂語句來擴展 Python 語法?
    為 Python 語法新增語句Python 的語法允許語句定義,例如 print、raise 和 with。雖然這些語句提供了廣泛的功能,但可以擴展此語法以適應自訂語句。 建立自訂語句涉及兩個主要步驟建立自訂語句:修改語法:您需要更新Python 的語法以包含新語句的定義。這涉及到修改 Gramma...
    程式設計 發佈於2024-11-08
  • 使用 PHP 中的服務層模式實現簡潔且可擴展的程式碼
    使用 PHP 中的服務層模式實現簡潔且可擴展的程式碼
    服務層模式是一種流行的設計方法,用於處理 PHP 應用程式中的業務邏輯。透過將應用程式邏輯與框架分離,我們創建了一個可擴展、可測試且可維護的程式碼庫。在本文中,我們將透過實際範例介紹服務層模式的基礎知識、其優點以及如何在 PHP 應用程式中實現它。 什麼是服務層模式? 服務層模式是...
    程式設計 發佈於2024-11-08
  • 您能否在 C++ 中實現高效的二分搜尋演算法,將迭代器返回搜尋結果?
    您能否在 C++ 中實現高效的二分搜尋演算法,將迭代器返回搜尋結果?
    在C 中搜尋高效的二分搜尋演算法程式設計師經常尋求實現高效的二分搜尋演算法,以提供對數時間複雜度的優勢。一個常見的要求是演算法傳回一個指向搜尋結果的迭代器,而不是一個指示其存在的簡單布林值。 C 標準庫在 標頭中提供了 std::binary_search,但它只傳回一個布林值。正如提問者所指出的...
    程式設計 發佈於2024-11-08
  • 使用 Javascript 的心形圖案程式碼
    使用 Javascript 的心形圖案程式碼
    程式碼 let heart = ""; let size = 6; // Loop to print upper part of the heart for (let i = size / 2; i <= size; i = 2) { for (let j = 1;...
    程式設計 發佈於2024-11-08
  • 如何將 PHP 資料庫結果數組轉換為 JSON?
    如何將 PHP 資料庫結果數組轉換為 JSON?
    將 PHP 資料庫結果陣列轉換為 JSON您想要在 PHP 中將資料庫查詢的結果陣列轉換為 JSON 格式。以下程式碼從資料庫中檢索一行:$row = mysql_fetch_array($result);要將$row 陣列轉換為JSON 格式以便與jQuery 外掛一起使用,您需要可以利用json...
    程式設計 發佈於2024-11-08
  • 如何在 Chrome DevTools 中輕鬆識別和監控表單元素事件?
    如何在 Chrome DevTools 中輕鬆識別和監控表單元素事件?
    了解元素互動觸發的事件要在可自訂表單元素上正確識別和處理事件,必須了解互動時觸發的特定事件。 Chrome DevTools 提供了一個強大的工具,monitorEvents,來協助完成此過程。 使用monitorEvents()檢查目標元素: 右鍵單擊該元素並選擇“Inspect”或在DevToo...
    程式設計 發佈於2024-11-08
  • 為什麼Go不支持傳統繼承?
    為什麼Go不支持傳統繼承?
    Go中的繼承Go為什麼不支持傳統型別繼承? 傳統型別繼承,即子類別繼承一個或多個父類別的定義,不是 Go 程式語言的功能。 創建者的基本原理在Go 語言中FAQ,語言創建者解釋說,面向對象的程式語言通常強調定義類型之間的關係,這些關係在Go 中可以自動推論。 Go 類型不會明確指定類型關係,而是自動...
    程式設計 發佈於2024-11-08
  • 如何在 Python 中建立虛擬環境
    如何在 Python 中建立虛擬環境
    Python 虛擬環境對於管理依賴關係和避免專案之間的衝突至關重要。本指南將引導您完成在 Python 中建立和啟動虛擬環境的過程。 第 1 步:導航到您的專案目錄 開啟終端並導覽至要設定 Python 虛擬環境的目錄。您可以使用 cd 命令來執行此操作: cd /path/to/...
    程式設計 發佈於2024-11-08
  • 如何在 Go JSON 解組中處理巢狀數組?
    如何在 Go JSON 解組中處理巢狀數組?
    Golang JSON:透過解組處理嵌套數組在Go 中,解組後處理嵌套JSON 數組時,理解錯誤至關重要「類型介面{}不支援索引。」當您嘗試存取儲存在interface{}變數中的JSON陣列中的元素時,會發生此錯誤。 要解決此問題,您需要利用類型斷言將interface{}變數轉換為底層陣列類型。...
    程式設計 發佈於2024-11-08
  • 如何在 Java 中組合路徑
    如何在 Java 中組合路徑
    組合Java 中的路徑C#/.NET 中的System.IO.Path.Combine 方法允許將多個路徑段組合成一個單一、有效的路徑。 Java 提供了實作類似功能的替代方法。 Path Object在 Java 7 及更高版本中,建議使用 java.nio.file.Path 類別進行路徑操作。...
    程式設計 發佈於2024-11-08
  • 有效 JSON 有哪些不同的定義?
    有效 JSON 有哪些不同的定義?
    理解最小有效 JSONJSON 的概念已在各種 RFC 和規範中廣泛討論。 RFC4627 最初將 JSON 定義為序列化物件或陣列。根據此定義,僅 {}(空物件) 和 [](空數組) 符合有效、完整的 JSON 字串的條件。 但是,ECMA-404引入了一項修正案,擴大了有效 JSON 字串的範圍...
    程式設計 發佈於2024-11-08
  • 使用 MapStruct 來映射繼承層次結構
    使用 MapStruct 來映射繼承層次結構
    Intro MapStruct provides a rich set of features for mapping Java types. The technical documentation describes extensively the classes and ann...
    程式設計 發佈於2024-11-08
  • SQLite 參數替換是否會導致 Python 中的綁定錯誤?
    SQLite 參數替換是否會導致 Python 中的綁定錯誤?
    SQLite 參數替換問題在Python 2.5 中使用SQLite3 時,嘗試迭代列表並從中檢索資料時會出現一個常見問題一個資料時會出現一個常見問題一個資料庫.使用建議的「?」作為 SQL 注入預防措施的參數通常會導致有關綁定數量的錯誤。 經過調查,很明顯該錯誤源自於資料庫表的初始建立。建立語句,...
    程式設計 發佈於2024-11-08
  • 可以處理變數的 ID 以存取 Python 中的物件嗎?
    可以處理變數的 ID 以存取 Python 中的物件嗎?
    變數的 ID 可以取消引用嗎? 在 Python 中,id() 函數傳回物件的唯一識別碼。這個標識符可以儲存在變數中,但是這個變數的ID可以解引用嗎? 從學術角度來看,答案是肯定的。 _ctypes 模組提供了一個函數 PyObj_FromPtr(),可以將指標轉換為 Python 物件。使用此函數...
    程式設計 發佈於2024-11-08
  • 為什麼 imagecreatefrompng() 產生黑色背景而不是透明區域?
    為什麼 imagecreatefrompng() 產生黑色背景而不是透明區域?
    imagecreatefrompng() 產生黑色背景而不是透明區域? 在 PHP 中,imagecreatefrompng() 函數通常用於處理 PNG映像。然而,據觀察,使用此函數時,PNG 透明度可能會轉換為純黑色。 要解決此問題,可以在使用imagecreatetruecolor() 建立新...
    程式設計 發佈於2024-11-08

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3