全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)

前言

最近在网上搜了许多关于pandas.DataFrame的操作说明,都是一些基础的操作,但是这些操作组合起来还是比较费时间去正确操作DataFrame,花了我挺长时间去调整BUG的。我在这里做一些总结,方便你我他。感兴趣的朋友们一起来看看吧。

一、创建DataFrame的简单操作:

1、根据字典创造:

In [1]: import pandas as pd
In [3]: aa={'one':[1,2,3],'two':[2,3,4],'three':[3,4,5]}
In [4]: bb=pd.DataFrame(aa)
In [5]: bb
Out[5]: 
 one three two
0 1 3 2
1 2 4 3
2 3 5 4`

字典中的keys就是DataFrame里面的columns,但是没有index的值,所以需要自己设定,不设定默认是从零开始计数。

bb=pd.DataFrame(aa,index=['first','second','third'])
bb
Out[7]: 
 one three two
first 1 3 2
second 2 4 3
third 3 5 4

2、从多维数组中创建

import numpy as np
In [9]: del aa
In [10]: aa=np.array([[1,2,3],[4,5,6],[7,8,9]])
In [11]: aa
Out[11]: 
array([[1, 2, 3],
 [4, 5, 6],
 [7, 8, 9]])
In [12]: bb=pd.DataFrame(aa)
In [13]: bb
Out[13]: 
 0 1 2
0 1 2 3
1 4 5 6
2 7 8 9

从多维数组中创建就需要为DataFrame赋值columns和index,否则就是默认的,很丑的。

bb=pd.DataFrame(aa,index=[22,33,44],columns=['one','two','three'])
In [15]: bb
Out[15]: 
 one two three
22 1 2 3
33 4 5 6
44 7 8 9

3、用其他的DataFrame创建

bb=pd.DataFrame(aa,index=[22,33,44],columns=['one','two','three'])
bb
Out[15]: 
 one two three
22 1 2 3
33 4 5 6
44 7 8 9
cc=bb[['one','three']].copy()
Cc
Out[17]: 
 one three
22 1 3
33 4 6
44 7 9

这里的拷贝是深拷贝,改变cc中的值并不能改变bb中的值。

cc['three'][22]=5
bb
Out[19]: 
 one two three
22 1 2 3
33 4 5 6
44 7 8 9

cc
Out[20]: 
 one three
22 1 5
33 4 6
44 7 9

二、DataFrame的索引操作:

对于一个DataFrame来说,索引是最烦的,最易出错的。

1、索引一列或几列,比较简单:

bb['one']
Out[21]: 
22 1
33 4
44 7
Name: one, dtype: int32

多个列名需要将输入的列名存在一个列表里,才是个collerable的变量,否则会报错。

bb[['one','three']]
Out[29]: 
 one three
22 1 3
33 4 6
44 7 9

2、索引一条记录或几条记录:

bb[1:3]
Out[27]: 
 one two three
33 4 5 6
44 7 8 9
bb[:1]
Out[28]: 
 one two three
22 1 2 3

这里注意冒号是必须有的,否则是索引列的了。

3、索引某几列的变量的某几条记录,这个折磨了我好久:

第一种

bb.loc[[22,33]][['one','three']]
Out[30]: 
 one three
22 1 3
33 4 6

这种不能改变这里面的值,你只是能读值,不能写值,可能和loc()函数有关:

bb.loc[[22,33]][['one','three']]=[[2,2],[3,6]]
In [32]: bb
Out[32]: 
 one two three
22 1 2 3
33 4 5 6
44 7 8 9

第二种:也是只能看

bb[['one','three']][:2]
Out[33]: 
 one three
22 1 3
33 4 6

想要改变其中的值就会报错。

In [34]: bb[['one','three']][:2]=[[2,2],[2,2]]
-c:1: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_index,col_indexer] = value instead
F:\Anaconda\lib\site-packages\pandas\core\frame.py:1999: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame
 return self._setitem_slice(indexer, value)

第三种:可以改变数据的值!!!

Iloc是按照数据的行列数来索引,不算index和columns

bb.iloc[2:3,2:3]
Out[36]: 
 three
44 9

bb.iloc[1:3,1:3]
Out[37]: 
 two three
33 5 6
44 8 9
bb.iloc[0,0]
Out[38]: 1

下面是证明:

bb.iloc[0:4,0:2]=[[9,9],[9,9],[9,9]]
In [45]: bb
Out[45]: 
 one two three
22 9 9 3
33 9 9 6
44 9 9 9

三、在原有的DataFrame上新建一个columns或几个columns

1、什么都不用的,只能单独创建一列,多列并不好使,亲测无效:

bb['new']=[2,3,4]
bb
Out[51]: 
 one two three new
22 9 9 3 2
33 9 9 6 3
44 9 9 9 4
bb[['new','new2']]=[[2,3,4],[5,3,7]]
KeyError: "['new' 'new2'] not in index"

赋予的list基本就是按照所给index值顺序赋值,可是一般我们是要对应的index进行赋值,想要更高级的赋值就看后面的了。

2、使用字典进行多列按index赋值:

aa={33:[234,44,55],44:[657,77,77],22:[33,55,457]}
In [58]: bb=bb.join(pd.DataFrame(aa.values(),columns=['hi','hello','ok'],index=aa.keys()))
In [59]: bb
Out[59]: 
 one two three new hi hello ok
22 9 9 3 2 33 55 457
33 9 9 6 3 234 44 55
44 9 9 9 4 657 77 77

这里aa是一个字典和列表的嵌套,相当于一条记录,使用keys当做index名而不是一般默认的columns名。达到了按index多列匹配的目的。由于dict()储存是混乱的,之间用dict()而不给他的index赋值会记录错乱,这一点注意值得注意。

四、删除多列或多记录:

删除列

bb.drop(['new','hi'],axis=1)
Out[60]: 
 one two three hello ok
22 9 9 3 55 457
33 9 9 6 44 55
44 9 9 9 77 77

删除记录

bb.drop([22,33],axis=0)
Out[61]: 
 one two three new hi hello ok
44 9 9 9 4 657 77 77

跟大家分享一篇关于python中pandas.DataFrame对行与列求和及添加新行与列示例,感兴趣的朋友们可以看看。

DataFrame还有很多功能还没有涉及,等以后有涉及到,看完官网的API之后,还会继续分享,everything is ok。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# pandas  # dataframe索引  # 创建dataframe  # python  # dataframe删除  # Python pandas自定义函数的使用方法示例  # 用Python的pandas框架操作Excel文件中的数据教程  # python获取Pandas列名的几种方法  # Python中pandas dataframe删除一行或一列:drop函数详解  # Python遍历pandas数据方法总结  # Python pandas常用函数详解  # Python中如何使用Pandas库自定义函数  # 多维  # 感兴趣  # 朋友们  # 报错  # 几条  # 组中  # 都是  # 是一个  # 几个  # 就会  # 是个  # 还没有  # 多个  # 给他  # 则是  # 还会  # 其他的  # 长时间  # 而不  # 达到了 


相关文章: 如何在建站主机中优化服务器配置?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  建站之星北京办公室:智能建站系统与小程序生成方案解析  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  建站之星展会模版如何一键下载生成?  Android自定义listview布局实现上拉加载下拉刷新功能  建站之星安装模板失败:服务器环境不兼容?  高端建站三要素:定制模板、企业官网与响应式设计优化  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  如何在IIS中新建站点并解决端口绑定冲突?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  如何通过FTP服务器快速搭建网站?  ,想在网上投简历,哪几个网站比较好?  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  定制建站是什么?如何实现个性化需求?  南平网站制作公司,2025年南平市事业单位报名时间?  网站制作企业,网站的banner和导航栏是指什么?  如何在宝塔面板中修改默认建站目录?  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  网站制作新手教程,新手建设一个网站需要注意些什么?  如何选择PHP开源工具快速搭建网站?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  广州商城建站系统开发成本与周期如何控制?  jQuery 常见小例汇总  网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?  如何在VPS电脑上快速搭建网站?  如何构建满足综合性能需求的优质建站方案?  早安海报制作网站推荐大全,企业早安海报怎么每天更换?  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  一键网站制作软件,义乌购一件代发流程?  建站之星价格显示格式升级,你的预算足够吗?  如何挑选高效建站主机与优质域名?  广东专业制作网站有哪些,广东省能源集团有限公司官网?  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  代刷网站制作软件,别人代刷火车票靠谱吗?  如何确保FTP站点访问权限与数据传输安全?  小型网站建站如何选择虚拟主机?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  如何在阿里云购买域名并搭建网站?  如何快速生成橙子建站落地页链接?  如何通过网站建站时间优化SEO与用户体验?  保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?  详解jQuery中基本的动画方法  家具网站制作软件,家具厂怎么跑业务?  PHP正则匹配日期和时间(时间戳转换)的实例代码  制作旅游网站html,怎样注册旅游网站?  如何通过VPS搭建网站快速盈利?  网站制作说明怎么写,简述网页设计的流程并说明原因?  无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?  深圳网站制作培训,深圳哪些招聘网站比较好? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。