Python数据分析之 Pandas Dataframe修改和删除及查询操作
作者:tigeriaf 发布时间:2023-08-03 23:01:13
一、查询操作
可以使用Dataframe的index属性和columns属性获取行、列索引。
import pandas as pd
data = {"name": ["Alice", "Bob", "Cindy", "David"], "age": [25, 23, 28, 24], "gender": ["woman", "man", "woman", "man"]}
df = pd.DataFrame(data)
print(df.index)
print(df.columns)
df
结果输出如下:
元素的查询
DataFrame 元素查询有一下几种查询方式:使用[]切片、loc方法、iloc方法、at方法、iat方法等,下面分别介绍一下。
使用[]切片:
和Series数据结果一样,Dataframe也支持使用[]进行切片,使用方式也类似,通过行、列的下标或名称进行指定位置元素的查询。
例如:
# 获取第0行数据
df[0:1]
# 获取第2-4行数据(不包括4)
df[2:4]
# 获取某一列
df.name # df["name"]
# 获取某几列
df[["name", "gender"]]
# 获取指定行指定列
df[2:4][["name", "gender"]]
通过loc方法和iloc方法:
其中loc方法是以行索引的名称和列索引的名称作为参数使用,iloc方法是以行索引的位置和列索引的位置作为参数使用,具体使用方式如下:
# 获取某行
df.loc[1]
df.iloc[1]
# 获取多行
df.loc[1:3]
df.iloc[1:3]
# 获取某列
df.loc[:, "name"]
df.iloc[:, 0]
# 获取多列
df.loc[:, ["name","gender"]]
df.iloc[:, [0,2]]
除了上面这些, 这里有一点需要注意一下,就是使用loc方法行索引参数为区间时,区间前后都为闭区间;而iloc为前闭后开区间。
通过at方法和iat方法:
at和iat的使用方法与loc和iloc类似,不同的是,at和iat只能访问单个元素,不能访问多个元素,但是查询速度比loc和iloc更快一些,具体使用如下:
# 查询index为0列名为name的元素
df.at[0, "name"]
# 查询第2行第1列的元素
df.iat[2,1]
说完Dataframe的查询操作,这篇文章就来介绍一下Dataframe数据的修改及删除操作。
二、修改操作
行列索引的修改
Dataframe对象提供了rename()
方法修改行索引、列索引,默认修改行索引,可以指定columns参数修改列索引,
具体使用方法如下:
# 修改指定行索引
df.rename({1:"one", 2:"two"}, inplace=True)
# 修改指定列索引
df.rename(columns={"city": "address"}, inplace=True)
df
结果输出如下:
参数inplace=True
表示在原来的 DataFrame 上进行修改。
元素值的修改
上面查询操作说到说到可以通过loc、iloc、at、iat等方法获取指定位置的值,修改其实也是通过这些方法先指定某个位置,然后进行赋值即可修改,例如:
# 修改1-2行age和city列的数据
df.loc[1:2, ["age","city"]] = [["22", "北京"],["21", "济南"]]
# 修改gender列 man-->男
df.loc[df["gender"]=="man", "gender"] = "男"
df
输出结果如下:
三、行和列的删除操作
DataFrame提供了drop()
方法进行行和列的删除操作。
具体用法和参数如下:
df.drop(labels=None, axis=0, index=None, columns=None, inplace=False)
labels:指定要删除的行或列,可以使用列表指定多个行/列索引
axis:取值为0和1,代表行和列,默认为0,表示要删除的是行,设置为1表示删除列
index:指定要删除的行,可以使用列表指定多个行索引
columns:指定要删除的列,同样可以使用列表指定多个列索引
inplace:默认为False,设置为True表示在原 DataFrame 上进行修改
具体通过代码看下:
# 删除单行
df.drop(4, inplace=True)
# 删除多行
df.drop([1,3], inplace=True)
# 删除多列
df.drop(["gender","city"], axis=1, inplace=True) # 或 df.drop(columns=["genger","city"], inplace=True)
df
来源:https://juejin.cn/post/7086844811294015495


猜你喜欢
- 起因看到网上的像素图片,感觉蛮有趣的,就打算用python一些PIL类库写一个。实现思路把一张图片分成多个块,每个块的颜色都等于这个色块中颜
- 前言最近在搞 Python 课程设计,想要搞一个好看的 UI,惊艳全班所有人。但打开 Qt Creator,Win7 风格的复古的按钮是在让
- 只是粗略的知道yield可以用来为一个函数返回值塞数据,比如下面的例子:def addlist(alist): &nbs
- /* 判断指定的内容是否为空,若为空则弹出 警告框 */ function isEmpty(theValue, strMsg){ if(th
- python实现学生信息管理系统,供大家参考,具体内容如下#!/usr/bin/env python# -*- coding:utf-8 -
- 前言本文主要给大家介绍了关于python中Numpy和Pandas使用的相关资料,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介
- 这是源于两年前,当我在做人生中第一个真正意义上的网站时遇到的一个问题该网站采用前后端分离的方式,由后端的 REST 接口返回 JSON 数据
- 【原文地址】Tip/Trick: Url Rewriting with ASP.NET 【原文发表日期】 Monday, February
- 有的时候我们在使用pycharm编辑python,需要导入各种各样的包,这些包是不能直接使用的,需要先进行安装。否则就会出现模块导入错误。下
- 实例如下所示:# -*- coding: utf-8 -*-"""使用通配符,获取所有文件,或进行操作。&qu
- 使用python + shell 编写,是一个简易solaris系统巡检程序#!/usr/bin/python -u#-*- coding:
- 1、DjangoDjango可能是最具代表性的Python框架,是遵循MMVC结构模式的开源框架。其名字来自DjangoReinhardt,
- SSI是英文Server Side Includes的缩写,翻译成中文就是服务器端包含的意思。从技术角度上说,SSI就是在HTML文件中,可
- PyQt5是基于Digia公司强大的图形程式框架Qt5的python接口,由一组python模块构成。PyQt5本身拥有超过620个类和60
- <?php interface js{ function ys($a,$b); } class Af implements js{ f
- 前言最近的一个项目中需要在图片上添加文字,使用了OpenCV,结果发现利用opencv给图像添加文字有局限。可利用的字体类型比较少,需要安装
- 今天看到一个教程,是关于Python安装pygame模块的。觉得很好,拿来分享一下。安装Python额,这个小题貌似在这里很是多余啊。但是为
- 分页:/*分页查找数据*/ CREATE PROCEDURE [dbo].[GetRecordSet] @strSql varchar(80
- 最早大家都没有给链接加title的习惯,后来因为w3c标准普及,又集体加上了title。从一个极端走到另个极端,于是出现很多怪异现象。两方面
- 1、纯粹的截取字符串function cutstr(thestr1,strlen) dim l,t,c&nbs