Pandas查询数据的df.loc方法中的5种子方法(三)

1、df.loc方法,根据行、列的标签值查询(.loc既能查询,又能覆盖写入,强烈推荐!)
  • (1)使用单个label值查询数据(行或者列,都可以只传入单个值,实现精确匹配)
# 得到单个值
print(df.loc['2018-01-03', 'bWendu'])
# 得到一个Series
print(df.loc['2018-01-03', ['bWendu', 'yWendu']])
  • (2)使用值列表批量查询
# 得到Series
print(df.loc[['2018-01-03','2018-01-04','2018-01-05'], 'bWendu'])
# 得到DataFrame
print(df.loc[['2018-01-03','2018-01-04','2018-01-05'], ['bWendu', 'yWendu']])
  • (3)使用数值区间进行范围查询(注意:区间既包含开始,也包含结束)
# 行index按区间
print(df.loc['2018-01-03':'2018-01-05', 'bWendu'])
# 列index按区间
print(df.loc['2018-01-03', 'bWendu':'fengxiang'])
# 行和列都按区间查询
print(df.loc['2018-01-03':'2018-01-05', 'bWendu':'fengxiang'])
  • (4)使用条件表达式查询(bool列表的长度得等于行数或者列数)
#简单条件查询,最低温度低于-10度的列表
print(df.loc[df["yWendu"]<-10, :])
# 观察一下这里的boolean条件
print(df["yWendu"]<-10)
#复杂条件查询,查一下我心中的完美天气(注意,组合条件用&符号合并,每个条件判断都得带括号)
## 查询最高温度小于30度,并且最低温度大于15度,并且是晴天,并且天气为优的数据
print(df.loc[(df["bWendu"]<=30) & (df["yWendu"]>=15) & (df["tianqi"]=='晴') & (df["aqiLevel"]==1), :])
# 再次观察这里的boolean条件
x = (df["bWendu"]<=30) & (df["yWendu"]>=15) & (df["tianqi"]=='晴') & (df["aqiLevel"]==1)
print(x)
  • (5)调用函数查询
# 直接写lambda表达式
print(df.loc[lambda df : (df["bWendu"]<=30) & (df["yWendu"]>=15), :])

# 编写自己的函数,查询9月份,空气质量好的数据
def query_my_data(df):
    return df.index.str.startswith("2018-09") & (df["aqiLevel"] == 1)

print(df.loc[query_my_data, :])
  • 注意:
    (1)以上查询方法,既适用于行,也适用于列。
    (2)注意观察降维dataFrame>Series>值(维度会降低)。
2、df.loc方法操作前的代码
#0、读取数据,数据为北京2018年全年天气预报
df = pd.read_csv("./datas/beijing_tianqi/beijing_tianqi_2018.csv")
# 设定索引为日期,方便按日期筛选,把日期设置为索引
df.set_index('ymd', inplace=True)
# 时间序列见后续课程,本次按字符串处理
# print(df.index)
# 替换掉温度的后缀℃
df.loc[:, "bWendu"] = df["bWendu"].str.replace("℃", "").astype('int32')
df.loc[:, "yWendu"] = df["yWendu"].str.replace("℃", "").astype('int32')
# print(df.head())
# print(df.dtypes)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值