首頁  >  文章  >  後端開發  >  如何同時有效率地將多個欄位新增至 Pandas DataFrame ?

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

Linda Hamilton
Linda Hamilton原創
2024-10-25 12:36:02286瀏覽

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

同時向Pandas DataFrame 添加多個列

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

挑戰

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

<code class="python">df[['column_new_1', 'column_new_2', 'column_new_3']] = [np.nan, 'dogs', 3]</code>

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

解決方案

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

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

<code class="python">df['column_new_1'], df['column_new_2'], df['column_new_3'] = np.nan, 'dogs', 3</code>

方法2:擴展單行以匹配索引

<code class="python">df[['column_new_1', 'column_new_2', 'column_new_3']] = pd.DataFrame([[np.nan, 'dogs', 3]], index=df.index)</code>

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

<code class="python">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
)</code>

方法四:使用.join與臨時DataFrame合併

<code class="python">df = df.join(pd.DataFrame(
    [[np.nan, 'dogs', 3]], 
    index=df.index, 
    columns=['column_new_1', 'column_new_2', 'column_new_3']
))</code>

方法五:使用字典臨時DataFrame

<code class="python">df = df.join(pd.DataFrame(
    {
        'column_new_1': np.nan,
        'column_new_2': 'dogs',
        'column_new_3': 3
    }, index=df.index
))</code>
方法五:使用字典臨時DataFrame >

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

<code class="python">df = df.assign(column_new_1=np.nan, column_new_2='dogs', column_new_3=3)</code>

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

<code class="python">new_cols = ['column_new_1', 'column_new_2', 'column_new_3']
new_vals = [np.nan, 'dogs', 3]
df = df.reindex(columns=df.columns.tolist() + new_cols)    # add empty cols
df[new_cols] = new_vals        # multi-column assignment works for existing cols</code>

方法8:多個連續賦值

<code class="python">df['column_new_1'] = np.nan
df['column_new_2'] = 'dogs'
df['column_new_3'] = 3</code>

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

以上是如何同時有效率地將多個欄位新增至 Pandas DataFrame ?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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