Python pandas 根据指定条件筛选数据

25 篇文章 11 订阅

import pandas as pd
import numpy as np
df=pd.DataFrame(np.arange(16).reshape(4,4),columns=["sh","bj","sz","gz"],index=["one","two","three","four"])

在这里插入图片描述

1、筛选出"sh"列大于5的数据

法一:直接筛选,适用于一些比较简单直接的筛选,这种方式方便快捷。

df[df["sh"]>5]

在这里插入图片描述

法二:函数筛选,适用于比较复杂的条件筛选,函数除了可以使用lambda匿名函数以外,也可以使用其他逻辑更复杂的自定义函数。

df[df["sh"].map(lambda x:x>5)]

在这里插入图片描述

2、筛选出"sh"列为2或7的数据

法一:同上

df[df["sh"]==5]

法二:同上

df[df["sh"].map(lambda x:x==5)]

法三:使用isin()函数,支持多值筛选

df[df["sh"].isin([5])]

3、模糊筛选

1)str.contains()函数

province = pd.DataFrame(['广东', '广西', '福建', '福建省'], columns=['省份'])
province.loc[province["省份"].str.contains("福")]#筛选出福建省数据

在这里插入图片描述

2)正则匹配

import re
province = pd.DataFrame(['广东', '广西', '福建', '福建省'], columns=['省份'])
#自定义函数,如果包含“广”字,则返回True,否则返回False
def func(x):
    if re.search(".*广.*",x):
        return(True)
    else:
        return(False)
province[province["省份"].apply(func)]

在这里插入图片描述

3)切片

df=pd.DataFrame({"date":["2020efgdh0228","2021hijik0228","2019hokh0201"],"value":[9999,777,4]})

在这里插入图片描述

#筛选出2019年的数据
df[df["date"].map(lambda x:x[0:4])=="2019"]

在这里插入图片描述

4.筛选重复值

在这里插入图片描述

df[df.duplicated(subset=["one"],keep="last")]#返回除最后一次出现的重复值

在这里插入图片描述

df[df.duplicated(subset=["one"],keep=False)]#返回所有重复值

在这里插入图片描述

  • 33
    点赞
  • 242
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值