ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

DataFrame 新增列的五种方法

2022-05-02 23:35:33  阅读:487  来源: 互联网

标签:loc 方法 列名 新增 DataFrame 五种 data out


一、准备数据

引入需用的包,并新建DataFrame例子

in [1]: import pandas as pd
         import numpy as np
in [2]: data = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]), columns=['a', 'b', 'c'])
in [3]: data
out[3]:
         a     b     c
    0     1     2     3
    1     4     5     6
    2     7     8     9

二、insert 方法

使用 pandas 的 insert 方法,第一个参数指定插入列的位置,第二个参数指定插入列的列名,第三个参数指定插入列的数据,这个方法也是我比较推崇的。

in [4]: data.insert(data.shape[1], 'd', 0)
in [5]: data
out[5]:
        a     b     c     d
    0     1     2     3     0
    1     4     5     6     0
    2     7     8     9     0

三、obj[‘col’] = value 方法

直接对 DataFrame 直接赋值即可

in [6]: data['d'] = 0
in [7]: data
out[7]:
         a     b     c     d
    0     1     2     3     0
    1     4     5     6     0
    2     7     8     9     0

四、reindex 方法

使用 reindex 函数,还可以指定缺失值填充的值,不过缺点是要把原有的列名和新列名都加上,如果列名过多,那就比较麻烦了。

in [8]: data = data.reindex(columns=['a', 'b', 'c', 'd'], fill_value=0)
in [9]: data
out[9]:
        a     b     c     d
    0     1     2     3     0
    1     4     5     6     0
    2     7     8     9     0

五、concat 方法

concat 方法是用来拼接数据的,在这里是利用拼接过程中新建一个包含新列名的空DataFrame,好处是可以同时新增多个列名。

in [10]: data = pd.concat([data, pd.DataFrame(columns=['d'])], sort=False)
in [11]: data
out[11]:
        a         b         c         d
    0     1.0     2.0     3.0     NaN
    1     4.0     5.0     6.0     NaN
    2     7.0     8.0     9.0     NaN

六、loc 方法

loc 方法和 iloc 方法一样,可以索引 DataFrame 数据,一般是通过 data.loc[index, col] = value 来进行赋值,这里利用:来索引全部行再进行赋值。

in [12]: data.loc[:, 'd'] = 0
in [13]: data
out[13]:
         a     b     c     d
    0     1     2     3     0
    1     4     5     6     0
    2     7     8     9     0

 

参考:https://blog.csdn.net/qq_35318838/article/details/102720553

标签:loc,方法,列名,新增,DataFrame,五种,data,out
来源: https://www.cnblogs.com/Vincent-yuan/p/16217319.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有