如何有效地向 Pandas DataFrame 添加多个列?

DDD
发布: 2024-10-25 09:54:02
原创
383 人浏览过

How to Efficiently Add Multiple Columns to a Pandas DataFrame?

同时为 Pandas DataFrame 分配多个列

在 Pandas 中使用数据帧的背景下,出现的问题是如何有效地添加多个列一项作业中的列。

最初的尝试及其缺点

许多用户自然会尝试使用以下语法来完成此任务:

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.使用 Pandas.DataFrame() 扩展 DataFrame

df[['column_new_1', 'column_new_2', 'column_new_3']] = pd.DataFrame([[np.nan, 'dogs', 3]], index=df.index)
登录后复制

3.使用 Pandas.concat

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
)
登录后复制

4 连接。使用 Pandas.join

df = df.join(pd.DataFrame(
    [[np.nan, 'dogs', 3]], 
    index=df.index, 
    columns=['column_new_1', 'column_new_2', 'column_new_3']
))
登录后复制

5 加入。使用 Pandas.join

df = df.join(pd.DataFrame(
    {
        'column_new_1': np.nan,
        'column_new_2': 'dogs',
        'column_new_3': 3
    }, index=df.index
))
登录后复制

6. 进行字典扩展。 .assign() 的多列参数

df = df.assign(column_new_1=np.nan, column_new_2='dogs', column_new_3=3)
登录后复制

7.列创建和分配

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
登录后复制

8.单独的作业

df['column_new_1'] = np.nan
df['column_new_2'] = 'dogs'
df['column_new_3'] = 3
登录后复制

方法的选择取决于用户的具体要求。为了简单和高效,单独分配通常可能是首选解决方案。但是,如果需要添加具有相同类型或值的多个列,其他方法可以提供灵活性和简洁性。

以上是如何有效地向 Pandas DataFrame 添加多个列?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!