Python pandas如何根据指定条件筛选数据
作者:永远在减肥永远110的的小潘
这篇文章主要介绍了Python pandas如何根据指定条件筛选数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
pandas根据指定条件筛选数据
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)]#返回所有重复值
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。