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\"])

e9107df91ea43ac7ca4d479ef4aa2bd3

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

法一:直接筛选

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

df[df[\"sh\"]>5]

fcca0e9723d593f43e7d20f4905a59b5

法二:函数筛选

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

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

e4d522b47bc8ea0cd5757d4011c89d01

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(\"福\")]#筛选出福建省数据

87855ae2c64004faafad9fffd6d16de5

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)]

93f3f6cf81888fab892aab7e5fab4ccc

3)切片

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

ed5bafd86f05a111cbc2ea80e9d5f6d9

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

d27f8b1f4a48c2db0df740ff340d6982

4、筛选重复值

c77a28b3bfaddde57aa13d15b39c8f57

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

4b23d33222f494bc8073719f6fc2e6ab

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

e272a320a12998404cbbd9b118bd7153

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容