在 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>
选择最合适的方法将取决于 DataFrame 的大小、要添加的新列的数量以及任务的性能要求。尽管如此,这些技术为 Pandas 用户提供了多种选项,可以有效地将多个列添加到他们的 DataFrame 中。
以上是如何同时高效地将多个列添加到 Pandas DataFrame 中?的详细内容。更多信息请关注PHP中文网其他相关文章!