pandas中关于ix()函数警告以及loc函数和iloc函数的使用详解

1.问题描述

今天引用一篇17年的python代码时出现了一点警告提示,
是关于pandas中ix切片函数的在这里插入图片描述
这里提示让我们尽量使用loc或者iloc函数,究竟是为什么呢,在我们先熟悉三个函数的用法之后我们或许就明白了

~~ ---------------------------------------------------------------------------------------------------------------- ~~

这里我们首先创建一个数组供我们举例用

>>>  pada = pd.DataFrame(np.arange(16).reshape(4,4),index=list('abcd'),columns=list('ABCD'))
>>>  pada

		A	B	C	D		#行索引index对应‘abcd’,列的索引columns对应‘ABCD’
	a	0	1	2	3
	b	4	5	6	7
	c	8	9	10	11
	d	12	13	14	15     

2.loc函数的使用

使用loc函数进行切片操作时只能使用列名或者行名,也就是‘abcd’和‘ABCD’
例如

>>> pada.loc['a','A']
	0
>>> pada.loc['a':'c','A':'B']

		A	B
	a	0	1      
	b	4	5
	c	8	9

提示:loc的切片操作是会包含:后的那一行列的,这一点要注意

loc不可以使用默认的‘0123’索引来切片,会报错

>>> pada.loc[0,0]    #会报错
>>> pada.loc[1:2,2:3]    #会报错
	

3.iloc函数的使用

iloc函数则和loc函数相反,只能使用默认的数字索引,不能使用自定义的行列名字索引

>>> pada.iloc[0,0]
	0
	
>>> pada.iloc[1:3,2:4] 

		C	D
	b	6	7
	c	10	11
	
>>> pada.iloc['a','A']    # 会报错
>>> pada.iloc['a':'c','A':'B']		#会报错

提示:iloc的切片操作是不会包含:后的那一行列的,这一点要注意和loc函数的区别

4.ix函数的使用

ix函数是合loc函数功能和iloc函数为一身,既可以使用行列名‘abcd’,‘ABCD’,也可以使用默认行列索引‘0123’

>>> pada.ix['a':'c',2:4]

		C	D
	a	2	3
	b	6	7
	c	10	11

5.看起来ix函数功能更强大一些,但是官方为什么还是不建议使用呢

我们不难想到这里我们的行列名称都是用的字母,但是我们要是用了数字作为行列名呢,这样用ix函数的时候不就乱了套么,它怎么知道你用的是默认索引该是自定义的数字索引呢,我想这就是官方不推荐的原因了

6.那我就是掺杂得想用默认索引和自定义索引怎么办呢,办法当然是有滴

方法一
方法有点笨,就是分两步走嘛,先用iloc,再用iloc,或者先用iloc,再用loc

方法二

>>> pada.iloc[1:2,pada.columns.get_loc('A')]
	b    4
	

这里的pada.columns.get_loc(‘A’)会得到’A‘的默认索引,这里相当于间接的使用了混合索引,但是没有破坏正常的语法规则

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值