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
猜你喜欢
- 如何在线查询本地机的文件?看看下面的例子,默认子目录与子虚拟目录为同一级别且名称一致,另我们使用了"http://intels.n
- 项目需求:将kafka解析来的日志获取到数据库的变更记录,按照订单的级别和订单明细级别写入数据库,一条订单的所有信息包括各种维度信息均保存在
- 我和朋友都建了一个电子商务网站,大量的访问,频繁地建立和中断数据库连接,导致Web 数据库应用程序降低了数据库服务器的性能。但最近,朋友使用
- 主要讲 except 和 not in 的性能上的区别。 代码如下:CREATE TABLE tb1(ID int) CREAT
- 在网页设计中有一些通用的交互设计模式。网站导航各种各样的通用和大家熟知的设计模式,可以用来作为为网站创建有效地信息架构的基础。这篇指南涵盖了
- 代码如下:<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"
- 原文:10 Principles Of Effective Web Design翻译:熊猫2008-02-03本文由熊猫同学授权翻译首发。并
- 要实现此效果需要 1 个步骤: 第 1 步: 把下面的代码加到<BODY></BODY&g
- cmake-2.8.3.tar.gzmysql-5.5.8.tar.gz一,cmake-2.8.3的安装:tar -zxf cmake-2.
- 现在大家都在讨论Web2.0 ,大家都在搞用户行为前端设计,现在注册一个ID一般只需要几秒钟,站长期望其产生高价值的UGC,形成一个只需要审
- 我们可以用鼠标把Dreamweaver的层在页面内拖动,但要全屏拖动就困难了,下面是一种实现的方法:制作步骤:一、准备图片,取名/file/
- 最近将Jesse James Garrett的《用户体验的要素》一书读了两遍,做一些简要的摘录并添加一些个人注释。当然,一本好书绝对不是简单
- Python实现模拟时钟代码推荐# coding=utf8import sys, pygame, math, randomfrom pyga
- 对于注入而言,错误提示是极其重要。所谓错误提示是指和正确页面不同的结果反馈,高手是很重视这个一点的,这对于注入点的精准判断至关重要。本问讨论
- 方法一:简单,得不到参数,只有一个虚拟路径 代码如下:GetUrl =request("url") 例如:http://
- 视觉设计是什么,人们怎么认为它的,自己又是怎么对待和理解它,它的核心价值是什么。视觉设计,冒似很艺术,跟艺术相关的职业,给大多数人的印象是做
- 前言opencv中封装了一个专门用于求解cv::Mat均值的函数,即cv::mean(&cv::Mat),该函数会得到Mat中各个通
- 在IE6中背景属性加 a 与 a:hover 两者的伪类结合,在正常逻辑下为何不起作用?测试这问题存在IE6及以下浏览器,这问题我经常遇到在
- 一、单字节SQL注入MYSQL的SQL注入已经由来已久,以下是普遍采用的注入步骤:1、在GET参数上加一个/*或者#(mysql专有的注释)
- 我对这两种连接方式认识不够深,似乎朋友们对此也没有定论。请问哪一种更好呢?DSN是采用数据源的连接方式,其使用方法是: Conn.