DataFrame查询数据

  • 加载数据
  • 通过索引查询
    • 查询某(几)列
    • 查询一列 的 某(几)行
    • 查询多列 的 某(几)行
  • 使用loc和iloc方法查询
    • 使用bool-series索引

加载数据

import pandas as pd# 加载数据
df = pd.read_excel('demo.xlsx', sheet_name=0)
# 重新构建行索引
index = ['index_' + str(tmp) for tmp in df.index]
# 添加到数据上去
df.index = index
print('df:\n', df)

修改索引的方法参见:https://blog.csdn.net/weixin_45760274/article/details/123459130

通过索引查询

通过索引查询数据时可以使用 行列的下标名称,查询多行多列数据时还可以配合切片进行查询 连续的 数据。
需要注意的是在查询 非连续的 多行多列数据时,需要传入列表组成列表嵌套

查询某(几)列

索引方式:先操作列,再去操作行

# 获取其中的一列
print('获取单列数据:\n', df['B'])
print('数据类型:\n', type(df['B']))
print('*' * 100)# 获取其中的多列数据  注意: [[ 用的是列表的嵌套!!! ]]
print('获取多列数据:\n', df[['B', 'C', 'D']])
print('数据类型:\n', type(df[['B', 'C', 'D']]))

查询一列 的 某(几)行

# 获取其中的一列的某几行
print('获取其中的一列的前5行:\n', df['B'][:5])  # 行下标切片
print('获取其中的一列的前5行:\n', df['B'][:'index_4'])  # 行名称切片---名称切片时包含尾部的!
print('获取其中的一列的前5行:\n', df['B'][[0, 1, 2, 3, 4]])  # 行下标列表
print('获取其中的一列的前5行:\n', df['B'][['index_0', 'index_1', 'index_2', 'index_3', 'index_4']])  # 行名称列表
print('获取其中的一列的前5行:\n', df['B'].head(5))  # head方法

上述输出结果都为:

print('获取其中的一列的后5行:\n', df['B'].tail(5))  # tail方法

查询多列 的 某(几)行

print('获取其中的多列的前n行:\n', df[['B', 'C', 'D']][:5])  # 行下标切片
print('获取其中的多列的前n行:\n', df[['B', 'C', 'D']][:'index_4'])  # 行名称切片
print('获取其中的多列的前n行:\n', df[['B', 'C', 'D']].head(5))  # head方法
print('获取其中的多列的后n行:\n', df[['B', 'C', 'D']].tail(5))  # tail方法
# print('获取其中的多列的前n行:\n', df[['B', 'C', 'D']][[0, 1, 2, 3]])  # 此时,行下标列表报错!
# print('获取其中的多列的前n行:\n', df[['B', 'C', 'D']][['index_0','index_1','index_2']])  # 此时,行名称列表报错!
"""
报错的原因是因为 df[['B', 'C', 'D']] 查询出的是多列数据,
后面的[[0, 1, 2, 3]]被当作是在前面的基础上继续查询列,而不是查询行
"""

使用loc和iloc方法查询

同时操作DataFrame的行和列,可以借助 loc 和 iloc 的方法

注意:loc只能使用名称iloc只能使用下标 。----不能混用!

DataFrame.loc[“行名称”, “列名称”]
DataFrame.iloc[行索引, 列索引]

print('获取其中的一列:\n', df.loc[:, 'B'])
print('获取其中的一列:\n', df.iloc[:, 5])print('获取其中的多列:\n', df.loc[:, ['A', 'B', 'D']])
print('获取其中的多列:\n', df.iloc[:, [2, 5, -2]])print('获取其中的多列:\n', df.loc[:, 'A':'C'])
print('获取其中的多列:\n', df.iloc[:, 0:3])print('获取多列的指定行:\n', df.loc['index_0':'index_4', ['A', 'B', 'D']])
print('获取多列的指定行:\n', df.iloc[0:5, 0:3])

从效率上来说—直接索引效率高,执行速度快,loc和iloc会稍微慢一点
从应用的广泛性来说—loc和iloc在工作中使用较多!

使用bool-series索引

boolList = [True,True,False,True,False,False,True,True,True,False,]
print("bool数组索引:\n",df.loc[boolList,:])

【Pandas】DataFrame查询数据相关推荐

  1. pandas.DataFrame——pd数据框的简单认识、存csv文件

    接着前天的豆瓣书单信息爬取,这一篇文章看一下利用pandas完成对数据的存储. 回想一下我们当时在最后得到了六个列表:img_urls, titles, ratings, authors, detai ...

  2. python pandas DataFrame 修改数据

    文章目录 修改行名 修改列名 修改行数据 修改列数据 修改单个数据 import pandas as pd df1 = pd.DataFrame({'日期': ['2021-7-2', '2021-8 ...

  3. 从mysql8.0读取数据并形成pandas dataframe类型数据,精确定位行列式中的元素,并读取...

    from pandas import * import pandas as pd from sqlalchemy import create_engine engine = create_engine ...

  4. mysql8s_从mysql8.0读取数据并形成pandas dataframe类型数据,精确定位行列式中的元素,并读取...

    Engine(mysql+pymysql://root:***@127.0.0.1:3306/ryandb?charset=UTF8MB4) comment colname tblbelongs0铜价 ...

  5. pandas Dataframe读取数据表是自定义列名

    方法一 首先将header设置为0后,使用names指定列名 csv_df = pd.read_csv('test.csv', header=0, names=['col1', 'col2', 'co ...

  6. 批量处理DataFrame行数据(pandas)

    写在前面 批量处理 pandas.DataFrame 行列数据 20200212,效率不怎么高 代码实现 方法1: 按列格式化处理数据 import re import numpy as np imp ...

  7. pandas 索引去重_python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除) 如何更新pandas dataframe的值...

    我用Python做了一个樱花树,360说有活动感染病毒正...import random import turtle __Pen = turtle.Pen() # 分形樱花树 # "画你的e ...

  8. python pandas 去重_Pandas 数据框增、删、改、查、去重、抽样基本操作方法

    怎么使用Python中Pandas库Resample,实现重采样,按照时间,比如原采样间隔为100ms,数据为[0,10,20,30,40],那么重采样#python中的pandas库主要有DataF ...

  9. pandas使用query函数查询dataframe指定数据列的内容(数值)不包含在特定列表中的数据行(not contain in list)

    pandas使用query函数查询dataframe指定数据列的内容(数值)不包含在特定列表中的数据行(select rows which column values are not containe ...

最新文章

  1. Linux 忘记登录密码?破解系统登陆密码
  2. 非常简单的截图小工具
  3. jquery-1.11.3.js与jquery-1.11.3.min.js区别
  4. LNMP_ 配置文件
  5. 设计模式:建造者模式
  6. Java 枚举类的基本使用
  7. rndis ethernet gadget 驱动 安装方法
  8. UIKit 框架之UIActionSheet
  9. 1042 字符统计 (20分)——16行代码满分
  10. JSF2.0与纯JS框架
  11. 动态添加input_前端提效必备:动态模版生成
  12. 天逸ad一66da_深入解析天逸ad66d与ad66a哪个好?区别是?内幕评测吐槽
  13. OPPO A37M刷机
  14. Arnold渲染用炫云云渲染让我动画制作更轻松了
  15. 外卖返利微信小程序源码
  16. 刷题——求斐波那契数列的第n项(迭代)
  17. 2-11 CAD基础 镜像(mirror)
  18. 飞思卡尔单片机PLL时钟总线模块
  19. android checkbox样式
  20. java jtextarea滚动条下滑,JTextArea更新时滚动条自动在最上面或者在最下面的方法...

热门文章

  1. python使用中文-Python中使用中文
  2. 【Java】UML类图详解-详细易懂
  3. 自底向上构造语法分析树Java_编译原理系列之五 自底向上优先分析(1)-简单优先分析法...
  4. TJPU-32 分解质因数
  5. 郝志峰《概率论与数理统计》期末复习笔记
  6. VC#2005进行WPS表格2005二次开发的例子
  7. 在线客服系统是一种网页版即时通讯软件的统称
  8. JavaScript:实现复制粘贴剪切功能
  9. 2022-2028全球与中国语音克隆市场现状及未来发展趋势
  10. 如何将guake设置为开机自启动