Pandas查询数据的四种方式以及使用df.loc查询数据的五种方法_3

import numpy as np
import pandas as pd

"""
pandas查询数据的几种方法
1.df.loc,根据行列标签值进行查询
2.df.iloc,根据行列的数字位置进行查询
3.df.where
4.df.query
*:.loc既能查询,又能覆盖写入

pandas使用df.loc查询数据的方法
1.使用单个label值进行查询
2.使用值列表进行批量查询
3.使用数值区间进行范围查询
4.使用条件表达式进行查询
5.使用函数进行查询

注意:1.以上查询方法既适用于行,也适用于列;2.注意观察降维dataframe->series->值
"""

# 读取数据
file_path_1 = "./test.csv"
df = pd.read_csv(file_path_1)
# 获取前五行数据
df_head = df.head()
# 设定行索引为日期,方便按照日期进行查询
df.set_index('ymd',inplace=True)  # 使用列名'ymd'那一列作为行索引,inplace=true说明是直接修改df,为false不会修改df,需要赋给一个新变量
# 替换掉bWendu列和yWendu列中C符号转为整数(3C->3)
df.loc[:,'bWendu'] = df['bWendu'].str.replace('C','').astype('int32')
df.loc[:,'yWendu'] = df['yWendu'].str.replace('C','').astype('int32')

# 1.使用单个label值进行查询
value_1 = df.loc['2018-01-03','bWendu'] #  查询2018-01-03的bWendu对应的值
value_2 = df.loc['2018-01-03',['bWendu','yWenddu']] #  查询2018-01-03的bWendu、yWendu对应的值

# 2.使用值列表进行批量查询
value_3 = df.loc[['2018-01-03','2018-01-20'],'bWendu'] #  查询2018-01-03、2018-01-20的bWendu对应的值
value_4 = df.loc[['2018-01-03','2018-01-20'],['bWendu','yWenddu']] #  查询2018-01-03、2018-01-20的bWendu、yWendu对应的值

# 3.使用数值区间进行范围查询
value_5 = df.loc['2018-01-01':'2018-02-01','bWendu'] # 行index范围查询
value_6 = df.loc['2018-01-01','bWendu':'yWendu'] # 列index范围查询
value_7 = df.loc['2018-01-01':'2018-02-01','bWendu':'yWendu'] # 行列都按照范围查询

# 4.使用条件表达式进行查询
value_8 = df.loc[df['bWendu']<10,:]  #  查询bWendu列小于10的所有列表
# 查询最高温度小于30,最低温度大于15,晴天,天气为优
value_9 = df.loc[(df['bWendu']<30) & (df['yWendu']>15) & (df['wheather']=='晴') & (df['aplive']=='1'),:]

# 5.调用函数进行查询
value_10 = df.loc[lambda df:(df['bWendu']<30) & (df['yWendu']>15),:]  # 这里函数是将整个dataframe传进去了
# 自定义函数(查询9月份空气质量好的数据)
def my_function(df):
    return df.index.str.startswith('2018-09') & (df['aplive'] == '1')
value_11 = df.loc[my_function,:]

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