python --Datatframe 索引与列名操作

学习目标

  • 知道如何查看索引及列名

  • 知道如何修改索引及列名

1 数据准备

数据在文章顶部,找不到的可以主页私聊我

我们继续使用链家租房数据来学习本章节的API,导包并读取数据

import pandas as pd
​
# 加载数据集
df = pd.read_csv('../data/LJdata.csv')
# 获取天通苑租房区域的所有数据, 返回df对象
df2 = df[df['区域'] == '天通苑租房']
print(df2.head())
# 获取df2中的价格列, 返回s对象
df2_price = df2['价格']
print(df2_price.head())
​
# 输出结果如下区域          地址    户型  面积  价格   朝向    更新时间  看房人数
3    天通苑租房  天通苑北一区  2室1厅   103  5300   东南  2017.07.25        30
35   天通苑租房  天通苑本四区  1室1厅    65  4200  南 北  2017.07.26        31
78   天通苑租房  天通苑东二区  2室1厅    91  4500  南 北  2017.07.26        20
148  天通苑租房  天通苑本六区  2室1厅   114  5500  南 北  2017.07.23        33
189  天通苑租房  天通苑东三区  2室1厅   109  5000  南 北  2017.07.25         4
3      5300
35     4200
78     4500
148    5500
189    5000
Name: 价格, dtype: int64

2 获取索引和列名

2.1 获取索引

# 查看df2的索引
print(df2.index)
​
# 查看s对象的索引
print(df2_price.index)
# print(df2_price.keys())
​
# 使用索引下标获取具体的某一个索引值
print(df2.index[0])
print(df2_price.index[0])
​
# 输出结果如下
Int64Index([   3,   35,   78,  148,  189,  295,  351,  387,  390,  458,  463,557,  687,  763,  934,  957, 1055, 1069, 1075, 1089, 1097, 1327,1372, 1374, 1400, 1402, 1410, 1608, 1632, 1904, 1905, 1919, 1933,1996, 2121, 2141, 2468, 2663, 2749],dtype='int64')
Int64Index([   3,   35,   78,  148,  189,  295,  351,  387,  390,  458,  463,557,  687,  763,  934,  957, 1055, 1069, 1075, 1089, 1097, 1327,1372, 1374, 1400, 1402, 1410, 1608, 1632, 1904, 1905, 1919, 1933,1996, 2121, 2141, 2468, 2663, 2749],dtype='int64')
3
3

2.2 获取列名

  • 除了查看索引的API以外,还有查看df中所有列名的API

print(df2.columns)  #  获取所有列的名字,存入Index对象
print(list(df2.columns))    #  获取所有列的名字 ,并转为普通列表
print(df2.keys())  #  获取所有列的名字 ,作用和columns一样
​
# 输出结果如下
Index(['区域', '地址', '户型', '面积', '价格', '朝向', '更新时间', '看房人数'], dtype='object')

3 索引和列名的修改方法

指定某列为索引

使用set_index函数
# 指定区域列作为索引
df3 = df2.set_index(keys=['区域'])
print(df3.head())
​
# 输出结果如下地址    户型  面积  价格   朝向    更新时间  看房人数
区域                                                                     
天通苑租房  天通苑北一区  2室1厅   103  5300   东南  2017.07.25        30
天通苑租房  天通苑本四区  1室1厅    65  4200  南 北  2017.07.26        31
天通苑租房  天通苑东二区  2室1厅    91  4500  南 北  2017.07.26        20
天通苑租房  天通苑本六区  2室1厅   114  5500  南 北  2017.07.23        33
天通苑租房  天通苑东三区  2室1厅   109  5000  南 北  2017.07.25         4
3.1.2 读取数据时指定索引列
# 使用index_col参数指定索引列
df4 = pd.read_csv('../data/LJdata.csv', index_col=['区域'])
print(df4.head())
​
# 输出结果如下地址    户型  面积  价格  朝向    更新时间  看房人数
区域                                                                    
燕莎租房          新源街  2室1厅    50  5800    南  2017.07.21        26
望京租房        澳洲康都  2室1厅    79  7800    东  2017.07.23        33
广安门租房      远见名苑  2室1厅    86  8000    东  2017.07.20        34
天通苑租房  天通苑北一区  2室1厅   103  5300  东南  2017.07.25        30
团结湖租房    团结湖北口  2室1厅    63  6400    南  2017.07.26        30

3.2 使用reset_index函数重置索引

  • Dataframe对象和Series对象使用reset_index函数一样,都返回使用默认自增索引的df

print(df4.reset_index())  # 重置索引之后,索引就使用 0 1 2 3 
print(df2_price.reset_index().head())  # s.reset_index()
​
# 输出结果如下区域          地址    户型  面积   价格  朝向    更新时间  看房人数
0       燕莎租房        新源街  2室1厅    50   5800    南  2017.07.21        26
1       望京租房      澳洲康都  2室1厅    79   7800    东  2017.07.23        33
2     广安门租房      远见名苑  2室1厅    86   8000    东  2017.07.20        34
3     天通苑租房  天通苑北一区  2室1厅   103   5300  东南  2017.07.25        30
4     团结湖租房    团结湖北口  2室1厅    63   6400    南  2017.07.26        30
...          ...           ...     ...   ...    ...   ...         ...       ...
2755    朝青租房    天鹅湾北区  1室1厅    50   9500    南  2017.07.27        13
2756  太阳宫租房        水星园  1室1厅    68   9500    北  2017.07.24        14
2757  六里桥租房      莲花小区  2室1厅    84   7200  西南  2017.07.26         7
2758  陶然亭租房  中海紫御公馆  2室2厅    91  12000    南  2017.07.26         6
2759  三元桥租房        曙光里  2室1厅    62   6200    南  2017.07.25        19
​
[2760 rows x 8 columns]index  价格
0      3  5300
1     35  4200
2     78  4500
3    148  5500
4    189  5000
  • 使用 drop=True 参数将不保留原索引

df4 = pd.read_csv('../data/LJdata.csv', index_col=['区域'])
print(df4.reset_index(drop=True))  # 将原来的索引列删除(将区域列删除)
print(df2_price.reset_index(drop=True).head())
​
# 输出结果如下地址    户型  面积   价格  朝向    更新时间  看房人数
0           新源街  2室1厅    50   5800    南  2017.07.21        26
1         澳洲康都  2室1厅    79   7800    东  2017.07.23        33
2         远见名苑  2室1厅    86   8000    东  2017.07.20        34
3     天通苑北一区  2室1厅   103   5300  东南  2017.07.25        30
4       团结湖北口  2室1厅    63   6400    南  2017.07.26        30
...            ...     ...   ...    ...   ...         ...       ...
2755    天鹅湾北区  1室1厅    50   9500    南  2017.07.27        13
2756        水星园  1室1厅    68   9500    北  2017.07.24        14
2757      莲花小区  2室1厅    84   7200  西南  2017.07.26         7
2758  中海紫御公馆  2室2厅    91  12000    南  2017.07.26         6
2759        曙光里  2室1厅    62   6200    南  2017.07.25        19
​
[2760 rows x 7 columns]
0    5300
1    4200
2    4500
3    5500
4    5000
Name: 价格, dtype: int64

3.3 赋值修改索引和列名

3.3.1 赋值修改索引
  • df.index 不光可以查看索引, 还可以修改索引

df5 = df2_price.reset_index().head()  # 一旦重置索引,则索引就会转为 0 1 2,原来的索引列变为普通列 
# 赋值修改索引
df5.index = ['a', 'b', 'c', 'd', 'e']
print(df5)
​
# 输出结果如下index  价格
a      3  5300
b     35  4200
c     78  4500
d    148  5500
e    189  5000
3.3.2 赋值修改列名
  • df.columns 不光可以查看列名,还可以修改列名

    # 赋值修改列名
    df5.columns = ['列名1', '列名2']
    print(df5)
    ​
    # 输出结果如下列名1  列名2
    a      3   5300
    b     35   4200
    c     78   4500
    d    148   5500
    e    189   5000

3.4 rename函数修改索引和列名

通过 df5.rename(index=, columns=, inplace=) 方法修改索引和列名

index: 接收字典, {原索引名:新索引名}

columns: 接收字典, {原列名:新列名}

inplace: TrueFalse, 是否在原数据上删除, 默认False

3.4.1 修改索引
  • 使用参数index={'原索引名': '新索引名', ...}修改想要修改的部分或全部索引

print(df5.rename(index={'a': 'A', 'e': 'E'}))
# print(df5)  # 还是修改前的df
​
# 输出结果如下列名1  列名2
A      3   5300
b     35   4200
c     78   4500
d    148   5500
E    189   5000
3.4.2 修改列名
  • 使用参数columns={'原列名': '新列名', ...}修改想要修改的部分或全部列名

print(df5.rename(columns={'列名1': 'index', '列名2': '价格'}))
# print(df5)  # 还是修改前的df
​
# 输出结果如下index  价格
a      3  5300
b     35  4200
c     78  4500
d    148  5500
e    189  5000

总结

请对下列API 有印象、能找到、能理解、能看懂

  • 查看或修改索引 <s/df>.index

  • 查看或修改列名 df.columns=[col_name1, col_name2, ...]

  • 读取数据时指定某列为索引 pd.read_csv('csv_path', index_col=[列名])

  • 设置某列为df的索引 df.set_index(列名)

  • 重置df的索引为默认自增索引 df.reset_index(drop=)

  • 指定修改部分索引值或列名

    df.rename(index={'原索引名1': '新索引名1','原索引名2': '新索引名2',...},columns={'原列名a': '新列名a','原列名b': '新列名b',...}
    )

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/24882.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【AIGC】基于大模型+知识库的Code Review实践

一、背景描述 一句话介绍就是&#xff1a;基于开源大模型 知识库的 Code Review 实践&#xff0c;类似一个代码评审助手&#xff08;CR Copilot&#xff09;。信息安全合规问题&#xff1a;公司内代码直接调 ChatGPT / Claude 会有安全/合规问题&#xff0c;为了使用 ChatGPT…

Mybatis CRUD操作

Mybatis 第一步-编写工具类 package com.ruoxue.utils;import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder;import jav…

集合中removeIf和stream流的filter差异比较

一、背景 今天在看同事写的代码的时候&#xff0c;看到了一个我很少使用的集合操作&#xff0c;一般我习惯过滤集合的数据的时候&#xff0c;采用stream流当中的filter操作&#xff0c;但是同事使用的是removeIf&#xff0c;对此简单看了看两者的区别&#xff0c;对此进行记录…

STM32F103C8开发板 STM32最小系统核心板 AD硬件原理图+PCB封装文件分享

STM32F103C8开发板原理图 原理图和PCB下载地址&#xff1a; STM32F103C8开发板 STM32最小系统核心板 AD硬件原理图PCB封装文件.zip: https://url83.ctfile.com/f/45573183-1269573020-8f85b2?p7526 (访问密码: 7526)

新手指南:如何使用Python快速上手深度学习

新手指南&#xff1a;如何使用Python快速上手深度学习 对于刚入门的新手而言&#xff0c;开始深度学习的旅程可能看起来既令人兴奋又略感困惑。Python是进行深度学习研究和应用的首选语言&#xff0c;因为它拥有丰富的库和框架&#xff0c;能够简化深度学习模型的开发和测试过…

前端使用axios下载文件和上传文件

首先&#xff0c;axios实例在发起下载文件请求时&#xff0c;应该配置responseType: ‘blob’&#xff0c;例如&#xff1a; // axios发起下载文档请求 export const downloadDoc (id: string) > {return request.get(/downloadDoc?id${id}, {// 参考官方文档https://www…

Bio-Info 每日一题:Rosalind-04-Rabbits and Recurrence Relations

&#x1f389; 进入生物信息学的世界&#xff0c;与Rosalind一起探索吧&#xff01;&#x1f9ec; Rosalind是一个在线平台&#xff0c;专为学习和实践生物信息学而设计。该平台提供了一系列循序渐进的编程挑战&#xff0c;帮助用户从基础到高级掌握生物信息学知识。无论你是初…

指针在C/C++中的魔力:一级指针与二级指针

什么是指针&#xff1f; 指针是一个变量&#xff0c;它的值是另一个变量的地址。在C/C中&#xff0c;指针是一个强大的工具&#xff0c;可以让我们直接操作内存地址。指针的主要用途包括动态内存分配、数组和字符串处理、函数参数传递等。 一级指针 一级指针&#xff08;也称为…

聊一聊大数据需求的流程

大致的流程&#xff1a;需求对接、口径梳理、数据开发、任务发布、任务监控、任务保障 流程图 startuml skinparam packageStyle rectangleactor 需求方 participant 数据BP as 数据组 participant 离线数仓 participant 实时数仓需求方 -> 数据组: 提出需求 数据组 -> …

Android 日志实时输出

开发中如果只是单纯的应用开发&#xff0c;Android studio基本上可以满足&#xff0c;但是如果应用和系统联调那就得用logcat实时输出了&#xff0c;我这里都是总结的实用经验&#xff0c;没那么多花里胡哨 Android 日志实时输出 1、输出 android log //分步&#xff0c;进入s…

造假高手——faker

在测试写好的代码时通常需要用到一些测试数据&#xff0c;大量的真实数据有时候很难获取&#xff0c;如果手动制造测试数据又过于繁重无聊&#xff0c;显得不够优雅&#xff0c;今天我们介绍的faker这个轮子可以完美的解决这个问题。faker是一个用于生成各种类型假数据的库&…

Spring AOP(实现,动态原理)详解版

Spring AOP 1.什么是AOP&#xff1f;1.1引入AOP依赖1.2编写AOP程序 2.Spring AOP核⼼概念2.1 切点(Pointcut)2.2连接点(Join Point)2.3通知(Advice)2.4 切⾯(Aspect) 3.通知类型3.1顺序3.2切⾯优先级 Order3.3 ⾃定义注解 MyAspect 4. Spring AOP 原理5 动态代理怎么实现5.1 JD…

D455相机RGB与深度图像对齐,缓解相机无效区域的问题

前言 上一次我们介绍了深度相机D455的使用&#xff1a;intel深度相机D455的使用-CSDN博客&#xff0c;我们也看到了相机检测到的无效区域。 在使用Intel深度相机D455时&#xff0c;我们经常会遇到深度图中的无效区域。这些无效区域可能由于黑色物体、光滑表面、透明物体以及视…

基于大模型 Gemma-7B 和 llama_index,轻松实现 NL2SQL

节前&#xff0c;我们星球组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学. 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 汇总合集&…

数字滤波器和模拟滤波器(一)

模拟滤波器和数字滤波器&#xff08;一&#xff09; 下面介绍模拟滤波器和数字滤波器的频率响应的异同&#xff0c;以及如何使用python地scipy.signal来绘制其频谱响应和冲激阶跃响应。在第二期将谈到如何设计模拟滤波器和数字滤波器。 在正文之间&#xff0c;应该介绍连续时…

嵌入式学习——Linux高级编程复习(目录IO、软硬连接、makefile)——day38

1. 目录IO 目录IO是指在计算机程序中对文件目录进行操作的一系列输入输出功能。这些操作允许程序创建、读取、修改和删除目录结构。在Unix/Linux系统和类似系统中&#xff0c;目录被视为特殊的文件&#xff0c;可以对其进行打开、读取、写入&#xff08;修改&#xff09;和关闭…

LLMs,即大型语言模型

LLMs&#xff0c;即大型语言模型&#xff0c;是一类基于深度学习的人工智能模型&#xff0c;它们通过海量的数据和大量的计算资源进行训练&#xff0c;可以理解和生成自然语言。LLMs的核心架构是Transformer&#xff0c;其关键在于自注意力机制&#xff0c;使得模型能够同时对…

腾讯元宝APP上线,AIGC产品的未来何去何从?

目录 腾讯元宝APP上线&#xff0c;AIGC产品的未来何去何从&#xff1f; 一、大模型AIGC产品概览 二、使用体验分享 1. 百度大脑 2. 阿里巴巴的AliMe 3. 字节跳动的TikTok AI 4. 腾讯元宝APP 小结 三、独特优势和倾向选择 1. 字节豆包 2. 百度文心一言 3. 阿里通义千…

【Jenkins】Jenkins - 节点

选择系统设置 - 节点设置 -添加节点 下载对应的 jar包 &#xff0c;执行命令 测试运行节点生效 1. 创建测试项目 test1 2. 选择节点执行&#xff1a; 在配置页面的“General”部分&#xff0c;找到“限制项目的运行节点”&#xff08;Restrict where this project can be run…

lubuntu / ubuntu 配置静态ip

一、查看原始网络配置信息 1、获取网卡名称 ifconfig 2、查询网关IP route -n 二、编辑配置文件 去/etc/netplan目录找到配置文件&#xff0c;配置文件名一般为01-network-manager-all.yaml sudo vim /etc/netplan/01-network-manager-all.yaml文件打开后内容如下 # This …