在Pandas 中,您可能會遇到需要根據應用於某個函數的自訂函數建立多個新列的情況現有專欄。該任務可能看起來很簡單,但由於函數的預期返回類型,可能會出現意想不到的挑戰。
最初,您可能會嘗試分配使用df.ix[: ,10:16] = df.textcol.map(extract_text_features) 語法直接連接到DataFrame 中一系列索引的函數。然而,由於函數的傳回類型不相容,這種方法通常會導致錯誤。
一個潛在的解決方案是使用 df.iterrows( 迭代 DataFrame 的每一行) )。此方法允許您將函數單獨應用於每一行並將結果捕獲為元組。然而,這種方法可能比其他選項慢得多。
更有效率、更有彈性的方法是使用 zip() 函數與 map() 結合使用來建立新的專欄。 zip() 函數將函數的輸出組合成一個元組,然後可以將其解壓縮到各個列中。例如,以下程式碼示範如何使用zip() 方法建立六個新欄位:
<code class="python">df['p1'], df['p2'], df['p3'], df['p4'], df['p5'], df['p6'] = zip(*df['num'].map(powers))</code>
Pandas 的最新更新引入了更方便的應用函數的方法轉到列並建立新列。例如,df.apply() 方法可讓您指定輸出格式(DataFrame、Series 或清單)並處理其他參數。此外,df.assign() 方法可讓您直接建立新列,而無需明確指派輸出。這些較新的方法在基於函數建立多個新列方面提供了更大的靈活性和效率。
以上是如何從 Pandas 中的函數有效率地建立多個新列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!