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

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

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

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 中。

最新教學 更多>

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

Copyright© 2022 湘ICP备2022001581号-3