Pandas DataFrame 筛选数据方法

DataFrame筛选数据的方法包括:根据字段、标签、位置、布尔索引、通过query进行筛选。

1、根据字段筛选数据

根据字段筛选简单理解为根据每一列继续筛选,将想要的列拿出再对齐进行操作,可以提高效率。

可以通过df.字段名、df[字段名]或df[['字段名']](此种方法可以拿取多列数据,并形成一个新的dataframe)

直接看代码

import pandas as pd
import numpy as np

df=pd.DataFrame(np.random.randint(0,150,size=(150,3)),
                columns=['math','python','english']
                )
print(df)
print(df.python)
print(df["math"])
print(df[['math']])
print(df[['math','python']])

2、根据标签筛选数据

标签可以理解为索引(每一行),标签除了默认的数字之外,在定义时可以根据需求进行定义。

通过loc进行操作  

import pandas as pd
import numpy as np

df=pd.DataFrame(np.random.randint(0,100,size=(10,3)),
                index=list('ABCDEFGHIG'),
                columns=['math','python','english']
                )
print(df.loc['A'])#筛选出标签A这一行
print(df.loc[['A']])#将A这一行返回成一个新的DataFrame
print(df.loc[['A','B']])#将AB两行返回成DataFrame
print(df.loc[['A','B'],['math','python']])#左边为标签,右边为字段,即将AB两行的math、python两列返回
print(df.loc['A':'F',['math','python']])#采用分区方法,将A到F行的此两列返回
print(df.loc[:,['math','python']])#单独的‘:’表示所有行
print(df.loc['B'::2])#从B开始隔一个取一个

 

3、根据布尔索引筛选数据

通过比较运算进行创造布尔条件,通过其值进行筛选。值得注意的是其逻辑运算为(&、|、~)

import pandas as pd
import numpy as np

df=pd.DataFrame(np.random.randint(0,151,size=(2000,3)),
                columns=['math','python','english']
                )
cond1=df.python>99#其返回值为一个bool类型的series,需要变量进行接受
print(cond1)
df1=df[cond1]
print(df1[['python']])#将cond1作为筛选条件,这里为了只看其中一列,用一个新的dataframe

print(df[df>50])#对df中的所有元素进行判定,其false项会换成NaN

print(df[df.python.isin([108])])#使用isin方法查找python分数为108,中括号里也可以为数组

4、通过query筛选数据

query()方法允许使用SQL表达式进行筛选数据

df2=df.query('python>135 and math>120 and english > 100')
print(df2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值