目录
- pandas根据指定条件筛选数据
- 1、筛选出"sh"列大于5的数据
- 2、筛选出"sh"列为2或7的数据
- 3、模糊筛选
- 4、筛选重复值
- 总结
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)]#返回所有重复值
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持悠久资源网。
您可能感兴趣的文章:
- Pythonpandas如何获取数据的行数和列数
- Python pandas数据预处理之行数据复制方式
- Python数据分析:pandas中Dataframe的groupby与索引用法
- pandas实现对一列/多列进行数据区间筛选
- pandas数据合并与重塑之merge详解
- Python-pandas返回重复数据的index问题
- Pandas如何获取数据的尺寸信息