各位同学好,今天我向大家介绍一下pandas库中的索引操作--增、删。

1. 增加

1.1 对series操作

方法一:在原有数据上增加,改变原有数据。

Series名[新标签名] = 新标签名对应的值

创建Series类型数据ps1,它的标签为'a'到'e',对应的值为0到4,原标签不存在'g',使用ps1['g']=9,在原数组的最后追加一个标签'g',以及它对应的值9。

import pandas as pd
# 创建一个Series类型数据,标签为'a'到'e',对应的值为0到4
ps1 = pd.Series(range(5),index=["a","b","c","d","e"])
# 新标签'g',对应的值为9
ps1["g"] = 9


 方法二:增加数据并赋值给新变量,不影响原来的数据

新变量 = Series名.append(Series类型数据)

创建一个Series类型数据ps1,使用字典创建一个被追加的Series数据,append()函数不会对原数据修改,需要用一个新变量来接收这个追加后的结果。

import pandas as pd
# 创建一个Series类型数据
ps1 = pd.Series(range(5),index=["a","b","c","d","e"])
# 利用字典创建一个需要添加的Series类型数据
s1 = pd.Series({'f':999})
# 将s1追加到ps1后面
ps2 = ps1.append(s1)


 1.2 对DataFrame操作

(1)对列操作

        在最后一列后面追加一列:

       变量名.[新标签] = 新标签对应的值

该方法会直接对原数据修改。如下,使用numpy创建一个1到9的一维数组,使用shape(行数,列数)函数变成3行3列的二维数组,再转换成DataFrame类型。pd1[4]=9,追加一列的新列标签名是4,这一列的值都是9。注意的是,此处的列标签名4是int类型,而pd1中的'A'、'B'等都是str类型。

import pandas as pd
import numpy as np
# 在最后一列后面追加一列
pd1 = pd.DataFrame(np.arange(1,10).reshape(3,3),index=["a","b","c"],columns=["A","B","C"])
# 追加一列的列标签名是4,这一列的值都是9
pd1[4] = 9
# 追加一列的列标签名是4,这一列的值与列表对应
pd1[4] = [11,12,13]  


        在指定位置插入一列:

       变量名.insert(下标索引位置前, 索引名, 列数据)

该方法会直接对原数据修改。首先下标索引位置是指位置索引标签,即0、1、2等。插入的索引名和值是插在自己指定的下标位置索引前面一列。如下,我指定位置索引是0,即我想在第1列前面插入一列。我定义的插入的一列的列索引名是'E'。

import pandas as pd
import numpy as np
# 在指定位置插入一列
pd1 = pd.DataFrame(np.arange(1,10).reshape(3,3),index=["a","b","c"],columns=["A","B","C"])
# 插入一列的列位置索引号是0,在0前插入标签E
pd1.insert(0,"E",[100,100,100])


 (2)对行操作

    在最后一行的后面追加一行,方法一:

变量名.loc[标签名] = 行数据

利用标签索引loc操作,涉及高级索引,后续章节会详述。该方法会直接对原数据修改。loc指定行,在原数据最后一行后面,新增行标签'k',及其对应的行数据。

import pandas as pd
# 在最后一行追加一行
pd1 = pd.DataFrame(np.arange(1,10).reshape(3,3),index=["a","b","c"],columns=["A","B","C"])
pd1.loc["k"] = [77,88,99]


        在最后一行的后面追加一行,方法二:

新变量 = 变量名.append(字典, ignore_index = True)

该方法不会直接对原数据修改,需使用新变量接收。如下,我有一行数据想追加到DataFrame后面,但是直接追加的话,字典的key和dataframe的列标签名不对应,无法直接追加,此时使参数ignore_index = True,使字典的key和dataframe的列标签自动匹配进行追加。

import pandas as pd
import numpy as np
# 在最后一行追加一行
pd1 = pd.DataFrame(np.arange(1,10).reshape(3,3),index=["a","b","c"],columns=["A","B","C"])
# 创建一个字典,字典的key和pd1的列标签不对应,需要调整位置
row = {"B":0,"A":6,"C":7}
# 使字典的key和列标签自动匹配进行追加
pd2 = pd1.append(row,ignore_index=True)


 2. 删除

2.1 对Series操作

(1)在原始数据上删除:

        del Series名[索引名]

删除索引名所对应的一行数据

import pandas as pd
# 删除一行数据
ps1 = pd.Series(range(5),index=["a","b","c","d","e"])
del ps1['c']  #删除c所在的一行

(2)不影响原始数据的删除:

 新变量 = series名.drop(索引名1, 索引名2)

需要一个新变量来接收结果。可以删除多行,自行输入需要删除的行索引名。

import pandas as pd
ps1 = pd.Series(range(5),index=["a","b","c","d","e"])  #创建一个series类型
# 删除'a'所在的一行
ps2 = ps1.drop('a')


 2.2 对DataFrame操作

(1)删除一行:

        新变量 = 变量名.drop(行索引名)

(2)删除多行

        新变量 = 变量名.drop([行索引名1, 行索引名2])

import pandas as pd
import numpy as np
pd1 = pd.DataFrame(np.arange(1,26).reshape(5,5),index=["a","b","c","d","e"],columns=["A","B","C","D","E"])
# 删除一行
pd_d1 = pd1.drop('a')
# 删除多行
pd_d2 = pd1.drop(['a','c'])


 (3)删除一列:

新变量 = 变量名.drop(索引名, axis = 1)

新变量 = 变量名.drop(索引名, axis = 'columns')

 (4)删除多列:

新变量 = 变量名.drop([索引名1,索引名2], axis = 1)

新变量 = 变量名.drop([索引名1,索引名2], axis = 'columns')

该方法需要有变量接收返回值。对列操作需要指定轴axis,axis=1代表列方向,axis=0代表行方向。

import pandas as pd
import numpy as np
pd1 = pd.DataFrame(np.arange(1,16).reshape(3,5),index=["a","b","c"],columns=["A","B","C","D","E"])
# 删除一行
pd2 = pd1.drop("A",axis=1)
# 删除多行
pd3 = pd1.drop(["A","C"],axis='columns')


 (5)inplace属性:

        变量名.drop(行索引名, inplace=True)

可直接在原数据上修改,不需要新变量来接收返回结果。

import pandas as pd
import numpy as np
pd1 = pd.DataFrame(np.arange(1,13).reshape(4,3),index=["a","b","c","d"],columns=["A","B","C"])
# 删除一行
pd1.drop("a",inplace=True)  

【Pandas库】(5) 索引操作--增、删相关推荐

  1. python read_excel 参数_详解pandas库pd.read_excel操作读取excel文件参数整理与实例

    详解pandas库pd.read_excel操作读取excel文件参数整理与实例 来源:中文源码网    浏览: 次    日期:2019年11月5日 详解pandas库pd.read_excel操作 ...

  2. python read_excel header_详解pandas库pd.read_excel操作读取excel文件参数整理与实例

    除了使用xlrd库或者xlwt库进行对excel表格的操作读与写,而且pandas库同样支持excel的操作:且pandas操作更加简介方便. 首先是pd.read_excel的参数:函数为: pd. ...

  3. pandas库--DataFrame常用操作

    文章目录 前言 一.DataFrame创建 1.基于列表创建 2.基于字典创建 二.查询 1.df直接查询 ① 查询一列 ② 查询多列 ③ 条件查询 2.query()方法 ① 条件查询 ② 带有变量 ...

  4. 【python】pandas库pd.read_excel操作读取excel文件参数整理与实例

    除了使用xlrd库或者xlwt库进行对excel表格的操作读与写,而且pandas库同样支持excel的操作:且pandas操作更加简介方便. 首先是pd.read_excel的参数:函数为: pd. ...

  5. 【Python学习系列十五】pandas库DataFrame行列操作使用方法

    参考:http://pandas.pydata.org/pandas-docs/stable/api.html#dataframe data['w'] #选择表格中的'w'列,使用类字典属性,返回的是 ...

  6. 【python】pandas库pd.to_excel操作写入excel文件参数整理与实例

    excel的写入函数为pd.DataFrame.to_excel():必须是DataFrame写入excel, 即Write DataFrame to an excel sheet. to_excel ...

  7. 【django】数据库操作-增 删 改

    一.增加数据 增加数据有两种⽅法. 1)save 通过创建模型类对象,执⾏对象的save()⽅法保存到数据库中. f1=FilmInfo(fname='我爱你中国',pub_data='2021-10 ...

  8. 【Pandas库】(4) 索引操作--重新生成索引

    各位同学好,今天和大家分享一下pandas库的索引操作--重新生成索引. 本文主要介绍如何重新生成Series类型和DataFrame类型的索引. (1)Series类型重新生成索引 方法: 变量 = ...

  9. 【Pandas库】(6) 索引操作--改、查、高级索引

    各位同学好,今天我和大家分享一下Pandas库的索引操作中的修改值.查找值.高级索引. 首先,我们先定义两个变量ps1存放Series数据,pd1存放DataFrame数据,以便后续操作. impor ...

最新文章

  1. 造成ORA-12560: TNS: 协议适配器错误的问题的原因有三个:
  2. Cow Toll Paths(floyd变形)
  3. P2197 【模板】nim游戏
  4. HDU 4085 Steiner树模板称号
  5. iphone11什么时候上市_hd3手表高仿哪里买 什么时候上市?
  6. android 线性布局蒙层,Android开发 - 掌握ConstraintLayout(一)传统布局的问题
  7. input内强制保留小数点后两位 位数不足时自动补0
  8. 【BZOJ4247】挂饰,又一个奇特的背包
  9. [FFmpeg] 常用命令
  10. 布尔操作的“骤死式”(short-circuiting behavior)
  11. POJ读书笔记6.1 - 约瑟夫问题 2746
  12. bzoj 2946: [Poi2000]公共串 后缀自动机
  13. 看到前一篇文章的感慨
  14. 又一知名教授在美被捕!饶毅发文声援,中方也回应了!
  15. java cas单点登录_JAVA - 登录 单点登录 cas
  16. matlab gui 作者,MATLAB GUI设计学习手记(第4版)
  17. kafka zookeeper docker容器互联
  18. 如何解决WORD安全模式错误问题
  19. html制作透明正方形,用css3简单的制作3d半透明立方体图片详解
  20. BUUCTF:九连环

热门文章

  1. github上的图片当网络图片使用
  2. .net2.0网站多语言
  3. mysql查询赋值、修改拼接字符串
  4. AngularJS 指令
  5. Android 趣味应用—— 短信编辑器
  6. codeforces A. Jeff and Digits 解题报告
  7. 一个apk多个ICON执行入口
  8. 小脚本,统计一个目录下满足特定条件文件的代码行数
  9. 强烈推荐:240多个jQuery插件
  10. ORB_SLAM2代码阅读(4)——LoopClosing线程