使用 Pandas 高效創建多個列
將函數應用於 pandas 列以產生多個新列可能是一項常見任務。然而,找到正確的方法來確保高效且正確的分配可能具有挑戰性。
在 pandas 的早期版本(v0.16 之前)中,經常使用 df.iterrows() 進行迭代。然而,這比更現代的方法要慢得多。經過最近的改進,有幾個有效的選項可用。
一種建議的方法使用 zip() 函數來解壓縮所應用函數的輸出並將它們分配給所需的列。此方法的工作原理是為每一行建立一系列元組,每個元組包含所需的輸出值。然後將元組解壓縮並分配給相應的列。
<code class="python">df['p1'], df['p2'], df['p3'], df['p4'], df['p5'], df['p6'] = \ zip(*df['num'].map(powers))</code>
也可以使用 apply() 函數,它提供了更直接的方法。應用的函數應該傳回一個具有所需列數和與輸入 DataFrame 相符的行索引的 pandas DataFrame。
<code class="python">df = df.apply(lambda x: powers(x['num']), axis=1, result_type='expand')</code>
pandas v0.16 中引入的 allocate() 函數提供了另一個便捷的方法來建立新列。它允許用戶使用表達式直接將新列指派給 DataFrame。
<code class="python">df = df.assign(p1=df['num'].map(lambda x: x), p2=df['num'].map(lambda x: x**2))</code>
以上是如何在 Pandas DataFrame 中高效建立多個列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!