Pandas---三种索引操作与loc/iloc区别

Dataframe 索引数据

原始数据:

data = pd.DataFrame(np.arange(12).reshape(4,3),columns=['A','B','C'])
	A	B	C
0	0	1	2
1	3	4	5
2	6	7	8
3	9	10	11

way1:普通标签

列索引:
data['A']	or 	data[['A','B']]
行索引:
data[:2]
可添加逻辑判断筛选
data = data[data['A']>2]
	A	B	C
1	3	4	5
2	6	7	8
3	9	10	11

way2:轴标签(loc)

data.loc[idx]			# 选择单行或多行(idx 为数值)
data.loc[ : , col]		# 选择所有行的col列
data.loc[idx , col]		# 同时选择行和列中的一部分
data.loc[:1,['B','A']]	# 前两行的'B','A'B	A
0	1	0
1	4	3

way3:整数标签(iloc)

data.iloc[idx]			根据整数位置选择单行或多行,where只能为数值
data.iloc[ : , idx]		根据整数位置选择单列或多列
data.iloc[where_i, where_j]	根据整数位置选择行和列
data.iloc[:2,:2]
	A	B
0	0	1
1	3	4
data.iloc[:2,[2,0,1]]
	C	A	B
0	2	0	1
1	5	3	4

注:索引得到的仍为 Dataframe,还可以继续进行pandas操作

loc与iloc的区别

data = pd.DataFrame(np.arange(12).reshape(4,3),columns=['A','B','C'],
					index=np.random.randint(0,20,4))
	A	B	C
1	0	1	2
10	3	4	5
16	6	7	8
14	9	10	11

data.loc[idx] 和 data.iloc[idx] 都可以获取第idx行
data.loc[idx][['A', 'B']] 和 data.iloc[idx][['A', 'B']] 都可以获取第idx行的AB列

但是!
1、	data.loc[idx,['A', 'B']]是允许的,data.iloc[idx, ['A', 'B']]则不行
2、	data.loc[1]['A'] 输出为 0, 为第一行
	data.iloc[1]['A'] 输出为 3, 为第二行
	原因:data.loc[idx]中的idx取的是DataFrame中第一列索引列
		 data.iloc[idx]中的idx取的则是DataFrame实际从上到下的行索引,0,1,2,3...

所以:
DataFrame在经过处理筛选后,若未重置索引,则使用data.loc[idx]会出现索引错误问题
而使用data.iloc[idx]则不会。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值