前言

最近在网上搜了许多关于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

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

总结

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

python pandas dataframe 不显示索引_python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)...相关推荐

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

    前言 最近在网上搜了许多关于pandas.DataFrame的操作说明,都是一些基础的操作,但是这些操作组合起来还是比较费时间去正确操作DataFrame,花了我挺长时间去调整BUG的.我在这里做一些 ...

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

    这篇文章主要介绍了python中pandas.DataFrame的简单操作方法,其中包括创建.索引.增添与删除等的相关资料,文中介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧. 前言 最近在 ...

  3. python dataframe去掉索引_python中pandas.DataFrame(创建、索引、增添与删除)的简单操作方法介绍...

    这篇文章python中pandas.DataFrame(创建.索引.增添与删除)的简单操作方法介绍,其中包括创建.索引.增添与删除等的相关资料,文中介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看 ...

  4. pandas 索引去重_python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除) 如何更新pandas dataframe的值...

    我用Python做了一个樱花树,360说有活动感染病毒正...import random import turtle __Pen = turtle.Pen() # 分形樱花树 # "画你的e ...

  5. Python基础_第5章_Python中的数据序列

    Python基础_第5章_Python中的数据序列 文章目录 Python基础_第5章_Python中的数据序列 Python中的数据序列 一.字典--Python中的==查询==神器 1.为什么需要 ...

  6. Python读取多个excel文件(删除字段、数据格式转换、dataframe多表合并)并写入ElasticSearch实战(自动创建索引、写入ElasticSearch、探索性数据分析)

    Python读取多个excel文件(删除字段.数据格式转换.dataframe多表合并)并写入ElasticSearch实战(自动创建索引.写入ElasticSearch.探索性数据分析) 目录

  7. Python基础_第3章_Python中的循环结构

    Python基础_第3章_Python中的循环结构 文章目录 Python基础_第3章_Python中的循环结构 Python中的循环结构 一.回顾分支练习题 1.判断是否为一个合法三角形 2.求世界 ...

  8. MySQL~索引设计原则:适合创建索引的11种情况、不适合创建索引的7种情况

    文章目录 数据的准备 适合创建索引 不适合创建索引 数据的准备 #1. 数据的准备CREATE DATABASE atguigudb1;USE atguigudb1;#1.创建学生表和课程表 CREA ...

  9. python dataframe取一列_python - 从pandas DataFrame列标题中获取列表

    python - 从pandas DataFrame列标题中获取列表 我想从pandas DataFrame中获取列标题列表. DataFrame将来自用户输入,因此我不知道将会有多少列或将调用它们. ...

最新文章

  1. AI当道,媒体会被机器牵着鼻子走?
  2. STM32 MDK编译后生成的 .map文件深入分析
  3. 开源项目如何挣钱? Spark 商业化公司创始人曝光心路历程
  4. 网站直达上线运营,API接口开发中
  5. ubuntu 配置python,Redis,Mysql
  6. apache 软件历史版本查询
  7. 2019艾肯VST声卡ProDriveIII-3.1.0最新驱动下载
  8. 球体重量在线计算机,用图形计算器研究热气球.doc
  9. 使用curl自动签到百度贴吧
  10. 乐华娱乐向港交所提交上市申请:2021年赚4亿元,韩庚亦是股东
  11. Ubuntu如何安装TeamViewer Ubuntu安装TeamViewer教程
  12. 畅购9-Spring Security Oauth2 JWT
  13. java操作远端ftp文件失败
  14. python的web框架flask_PythonWEB框架之Flask
  15. 华为 路由双点双向引入
  16. 为什么IO复用还需要搭配非阻塞IO
  17. 一些关于HTML与CSS的总结与实际应用
  18. linux设置时间大全
  19. 程序员求职面试谈工资的技巧 + 防坑指南
  20. 闲鱼如何0到1搭建一套发布引导链路

热门文章

  1. UVA11424 GCD - Extreme (I)【欧拉函数打表】
  2. Bailian4040 买书问题【Ad Hoc】
  3. UVA11029 Leading and Trailing【快速模幂+数学】
  4. UVA10267 Graphical Editor【模拟】
  5. windows 自带计算器 calc 的使用
  6. 危险的化学 —— 氢氟酸
  7. 机器学习基础(十七)—— boosting
  8. 身份证号第18位的计算
  9. c语言创建线程代码,如何用C语言实现多线程
  10. revit建筑样板_Revit怎么玩转预制管道?这技能可有点高级了啊