在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>
方法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>
以上是如何同時有效率地將多個欄位新增至 Pandas DataFrame ?的詳細內容。更多資訊請關注PHP中文網其他相關文章!