在Pandas 中,您可能會遇到需要根據應用於某個函數的自訂函數建立多個新列的情況現有專欄。該任務可能看起來很簡單,但由於函數的預期返回類型,可能會出現意想不到的挑戰。
最初,您可能會嘗試指派使用df.ix[: ,10:16] = df.textcol.map(extract_text_features) 語法直接連接到DataFrame 中一系列索引的函數。然而,由於函數的傳回類型不相容,這種方法通常會導致錯誤。
一個潛在的解決方案是使用 df.iterrows( 迭代 DataFrame 的每一行) )。此方法允許您將函數單獨應用於每一行並將結果捕獲為元組。然而,這種方法可能比其他選項慢得多。
更有效率、更靈活的方法是結合使用 zip() 函數和 map() 來建立新的專欄。 zip() 函數將函數的輸出組合成一個元組,然後可以將其解壓縮到各個列中。例如,以下程式碼示範如何使用zip() 方法建立六個新欄位:
df['p1'], df['p2'], df['p3'], df['p4'], df['p5'], df['p6'] = zip(*df['num'].map(powers))
, df['p5'], df['p6'] = zip(*df['num'].map(powers))改良的DataFrame 方法 Pandas 的最新更新引入了更方便的方法來將函數應用於列和建立新列。例如,df.apply() 方法可讓您指定輸出格式(DataFrame、Series 或清單)並處理其他參數。此外,df.assign() 方法可讓您直接建立新列,而無需明確指派輸出。這些較新的方法在基於函數建立多個新列方面提供了更大的靈活性和效率。 免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3