首页 > 其他分享 >DataFrame索引与列名操作

DataFrame索引与列名操作

时间:2024-09-26 22:48:06浏览次数:3  
标签:index 索引 列名 DataFrame 天通苑 2017.07 ...

DataFrame索引与列名操作

学习目标

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

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)
# print(df2.keys())

# 输出结果如下
Index(['区域', '地址', '户型', '面积', '价格', '朝向', '更新时间', '看房人数'], dtype='object')

3 索引和列名的修改方法

3.1 指定某列为索引

3.1.1 使用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())
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 参数将不保留原索引
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()
# 赋值修改索引
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',
            ...
        }
    )
    

标签:index,索引,列名,DataFrame,天通苑,2017.07,...
From: https://blog.csdn.net/weixin_54514072/article/details/142578769

相关文章

  • MongoDB TTL索引的使用
    在实际开发中,不少Java开发者会将日志类的debug信息存储到MongoDB中,以便在问题发生时进行排查。然而,这些过期的冗余数据长期占用磁盘空间,给系统带来了不小的负担。如何有效地清理这些垃圾数据呢?MongoDB的TTL索引提供了一个优雅的解决方案。TTL索引是一种特殊的单字段索引,它通过监控......
  • mysql的索引
    InnoDB是mysql的默认引擎,索引原理是B+树。InnoDB的索引方式首先,数据库的目录也是很庞大的,不能放在内存里。而磁盘的读写速度是比内存慢几个数量级。而且顺序读一块比随机I/O划算,也就是局部性原理。所以:InnoDB把数据和目录都放在默认大小16KB的数据页中。每次读都读一个页......
  • Mongodb 常见操作:查询,排序,查看索引,创建索引等
    //insertdb.books.insert([{_id:12,item:"pencil1",qty:51,type:"no.1"},{_id:21,item:"pencil1",qty:52,type:"no.2"},{_id:31,item:"pencil1",qty:53,type:"no.3"},])db.b......
  • Flutter 自定义国家选择器:基于 A ~ Z字母索引的列表跳转与侧边栏导航实现
    在许多移动应用中,我们经常需要通过字母索引快速跳转到目标位置,比如通讯录、国家选择等功能。这篇博客将带大家实现一个仿照通讯录的Flutter国家选择器。通过一个字母索引的侧边栏,用户可以快速跳转到目标字母分组。效果:1.项目需求与设计思路我们需要实现一个包含多个国......
  • 大数据-137 - ClickHouse 集群 表引擎详解2 - MergeTree 存储结构 一级索引 跳数索引
    点一下关注吧!!!非常感谢!!持续更新!!!目前已经更新到了:Hadoop(已更完)HDFS(已更完)MapReduce(已更完)Hive(已更完)Flume(已更完)Sqoop(已更完)Zookeeper(已更完)HBase(已更完)Redis(已更完)Kafka(已更完)Spark(已更完)Flink(已更完)ClickHouse(正在更新···)章节内容上节我们完成了如下的内容:表引擎详解介绍日志......
  • 【Elasticsearch系列七】索引 crud
    ......
  • SQL Server的Descending Indexes降序索引
    SQLServer的DescendingIndexes降序索引 SQLServer的DescendingIndexes降序索引   背景索引是关系型数据库中优化查询性能的重要手段之一。对于需要处理大量数据的场景,合理的索引策略能够显著减少查询时间。特别是在涉及多字段排序的复杂查询中,选择合适的索引类型......
  • 向量数据库常见算法 | 七十九、向量数据库与索引算法
    索引算法则是向量数据库中的核心技术之一,它决定了数据库的检索效率和性能。本文将探讨向量数据库与索引算法的完美结合,以及它们在实际应用中的优势。1.向量数据库的优势高效检索:向量数据库采用高效的索引算法,如倒排索引、KD树、LSH等,可以快速地检索和查询向量数据。高维度支持:向量......
  • 基于 pandas DataFrame 中所有列的值的最小行计数条件
    假设我在pandasDataFrame中有三列,没有任何null或空值。每个项目的设施始终具有唯一的值。一个项目可以有一个或多个与其关联的供应商。同一供应商可以显示对于给定项目的不同设施,多次注册。对于给定项目,设施永远不会与多个供应商关联。......
  • 笔记1 搜索引擎分类,搜索指令
    搜索引擎分类:目录式分类搜索引擎和全文式检索搜索引擎搜索引擎有Google、Baidu、Bing、搜狗、夸克等等......使用减号(-)指令,可以排除含有特定关键词的搜索结果,如搜索“原神-广告”,就能得到包含原神但不包含广告的结果filetype指令可以查询特定格式的文件:关键词+空格+filetype:+do......