pandas dataframe如何快速进行数据筛选

数据初始化

import pandas as pd
import numpy as np
a=np.array([['北京','北方','一线','非沿海'],['杭州','南方','二线','非沿海'],['深圳','南方','一线','沿海'],['烟台','北方','三线','沿海']])
df=pd.DataFrame(a,index=['一','二','三','四'],columns=['城市','地理','级别','是否沿海'])
城市	地理	级别	是否沿海
一	北京	北方	一线	非沿海
二	杭州	南方	二线	非沿海
三	深圳	南方	一线	沿海
四	烟台	北方	三线	沿海

选择某一行

通过loc选择某一行

loc标签是轴标签,也就是我们的索引名,使用也非常简单

df.loc['二']
城市       杭州
地理       南方
级别       二线
是否沿海    非沿海
Name: 二, dtype: object

通过iloc选择某一行

iloc为整数标签,类似我们使用的元组列表的索引。比如我们想选择第二行的数据,第二行的索引则为1.

df.iloc[1]
城市       杭州
地理       南方
级别       二线
是否沿海    非沿海
Name: 二, dtype: object

选择某一列

最简单的方法选择某一列

如果我们知道列索引,那么选择某一列则变得十分简单

df['级别']
一    一线
二    二线
三    一线
四    三线
Name: 级别, dtype: object

通过iloc选则某一列

正如我们上述使用iloc的方法,我们只需传入行或者列的索引即可。其实iloc的中括号里可以输入两个参数。前面为行,后面为列中间用逗号隔开。(如果省略了逗号,则默认取选择行)

比如现在我们想选择第二列,我们只需在逗号钱输入: 代表所有的行,后面则输入1代表第二列

df.iloc[:, 1]
一    北方
二    南方
三    南方
四    北方
Name: 地理, dtype: object

通过loc选择某一列

和iloc的使用相似,只不过在数据筛选中我们不再使用行整数索引,而是具体的索引值。

df.loc[:, '是否沿海']
一    非沿海
二    非沿海
三     沿海
四     沿海
Name: 是否沿海, dtype: object

选择某一行的某几列或某一列的某一行

其实loc与iloc是dataframe中选择数据最高效的方式,他的功能也十分强大。我们可以随意组合。

选择某一行的某几列

比如我们现在选择第二行的中间两列

df.iloc[1,1:3]
地理    南方
级别    二线
Name: 二, dtype: object

当然我们也可以不使用整数索引

df.loc['二':,'地理':'级别']
	地理	级别
二	南方	二线
三	南方	一线
四	北方	三线

通过行列自由组合去选择数据

比如我们想选择第二到三行的第二列和第三列

df.iloc[2:4:, 2:4]
	级别	是否沿海
三	一线	沿海
四	三线	沿海

同样十分简单,通过loc使用效果相同,这里不过多描述

选择某几列或者某几行

选择某几列
df.iloc[:,2:4]
	级别	是否沿海
一	一线	非沿海
二	二线	非沿海
三	一线	沿海
四	三线	沿海
选择某几行
	城市	地理	级别	是否沿海
二	杭州	南方	二线	非沿海
三	深圳	南方	一线	沿海

获取单个标量值

如果把dataframe看做一个表格,这里可以看成获得表格里某个单元格的值

通过iat去获取

iat即为整数标签

df.iat[2,2]
'一线'

通过at去获取

at即为具体的索引值去获取

df.at['三','级别']
'一线'
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值