在单个分配中向 Pandas DataFrame 添加多个列
在 Pandas 中,可以通过多种方式同时添加多个列。一种方法是单独为每一列分配值,但这对于多个列来说可能会变得乏味。更有效的方法是一步添加列。
乍一看,使用列列表语法将列表或数组分配给多个新列(例如 df[['new1', 'new2' ]] = [标量,标量]) 可能看起来很直观。但是,此分配仅适用于现有列。
要在单个操作中添加新列并分配值,您可以使用多种方法:
1.迭代器解包:
<code class="python">df['new1'], df['new2'], df['new3'] = np.nan, 'dogs', 3</code>
此方法迭代地将值分配给每个新列。
2. DataFrame 扩展:
<code class="python">df[['new1', 'new2', 'new3']] = pd.DataFrame([[np.nan, 'dogs', 3]], index=df.index)</code>
此方法创建一个具有与原始 DataFrame 索引匹配的单行的 DataFrame,然后使用 Pandas 的 concat 函数将新列合并到原始列中。
3.临时 DataFrame 连接:
<code class="python">df = pd.concat([df, pd.DataFrame([[np.nan, 'dogs', 3]], index=df.index, columns=['new1', 'new2', 'new3'])], axis=1)</code>
此方法使用新列和值创建一个临时 DataFrame,然后将其与原始 DataFrame 连接。
4.字典赋值:
<code class="python">df = df.join(pd.DataFrame({'new1': np.nan, 'new2': 'dogs', 'new3': 3}, index=df.index))</code>
此方法使用字典创建一个临时 DataFrame,然后与原始 DataFrame 连接。
5. .assign() 方法:
<code class="python">df = df.assign(new1=np.nan, new2='dogs', new3=3)</code>
.assign() 方法允许一次分配多列。
6.创建列并分配值:
<code class="python">new_cols = ['new1', 'new2', 'new3'] new_vals = [np.nan, 'dogs', 3] df = df.reindex(columns=df.columns.tolist() + new_cols) df[new_cols] = new_vals</code>
此技术创建空列并分别分配值。
多个单独分配:
<code class="python">df['new1'] = np.nan df['new2'] = 'dogs' df['new3'] = 3</code>
虽然不如其他方法高效,但单独分配很简单,并且可用于少量新列。
最佳选择取决于具体要求和性能考虑。对于同时添加多个列,DataFrame 扩展或临时 DataFrame 连接方法提供了简洁高效的解决方案。
以上是如何在一次分配中有效地将多列添加到 Pandas DataFrame 中?的详细内容。更多信息请关注PHP中文网其他相关文章!