Python - Pandas几种数据查询方法

本文摘要:

数据查询方法
【常用】df.loc方法,根据行、列的标签值查询
df.iloc方法,根据行、列的数字位置查询

**注意:**查询过程中数据类型会降维,要注意数据类型的转换。
DataFrame >> Series >> Pyhon数据类型

引入数据与题外话

import pandas as pd

df = pd.read_csv('xxx.csv')
# 假设不用pd自动生成的0-n的数字索引,将日期设置为索引
df.set_index('date', inplace=True)  # inplace为True即在原df上修改

使用准确的label(index,columns)查询数据

行或列传入准确的label值进行查询

# 查询行索引为'2022-03-26',列名为'High'的值
df.loc['2022-03-26', 'High']  # 返回一个值

# 查询行索引为'2022-03-26','Hign'和'Low'两列的值
df.loc['2022-03-26', ['High', 'Low']]
# 返回Series对象,Name为日期,索引为High,Low
# High 20
# Low  10
# Name:2022-03-26, dtype='object'

使用值列表批量查询

# 查询三个日期的High
df.loc[['2022-03-21', '2022-03-22', '2022-03-26'], 'High']
# 返回Series对象,此处Name为High,索引为日期

# 查询三个日期的High和Low,返回DataFrame对象
df.loc[['2022-03-21', '2022-03-22', '2022-03-26'], ['High', 'Low']]

使用区间进行范围查询

注意: 区间包含结尾

# 行用区间,即查找表中一小列,所以返回是Series对象
df.loc['2022-03-21':'2022-03-26', 'High']

# 列用区间,即查找表中一小行,返回也是Series对象
df.loc['2022-03-26', 'High':'Low']

# 行列都用区间,即表中查找一小表,返回DataFrame对象
df.loc['2022-03-21':'2022-03-26', 'High':'Low']

使用条件表达式查询

# 查询Low低于10的列表,:指查找所有列的内容
df.loc[df['Low'] < 10, :]

# 查询条件,其实返回的是一个键为所有index,值为True/False的Series对象
df['low'] < 10

# 多条件的查询表达式
df.loc[(df['High']<30) & (df['Low']>10), :]

使用函数查询

# 使用lambda表达式
df.loc[lambda df: (df['High']<30) & (df['Low']>10), :]

# 使用函数
def query_data(df):
	return df.index.str.startswith('2022-03') & df['High'] == 21

df.loc[query_data, :]

*此文仅为个人笔记

你可能感兴趣的:(Pandas,python)