本文摘要:
数据查询方法
【常用】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, :]
*此文仅为个人笔记