Pandas中iloc/loc/ix区别
Posted 修罗神天道
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pandas中iloc/loc/ix区别相关的知识,希望对你有一定的参考价值。
大家好,在使用pandas进行数据分析过程中,回想一下你是怎么对一个数据集进行数据切片,是不是百度:pandas如何提取第x行数据
,然后根据一堆结果找到一个能用的就完事了,那么你一定会迷失在pandas中的切片函数:.iloc()
、.loc()
、.ix()
中,本文就是为了解决这个问题,通过一个简单的DataFrame彻底搞明白这三个函数到底有什么区别,又该怎么使用。
首先我们创建一个DataFrame用于讲解
data = {'a':[11,22,33,44],
'b':['aa','bb','cc','dd'],
'c':[9,8,7,6],
'd':[1,2,3,4]
}
df = DataFrame(data)
df
a | b | c | d | |
---|---|---|---|---|
0 | 11 | aa | 9 | 1 |
1 | 22 | bb | 8 | 2 |
2 | 33 | cc | 7 | 3 |
3 | 44 | dd | 6 | 4 |
iloc:通过行/列号选取数据
.iloc就是通过行/列号
来选取数据,比如我们可以这样来选取第0行
数据
df.iloc[0]
a 11 b aa c 9 d 1 Name: 0, dtype: object
也可以按照行号选取多行数据
df.iloc[0:2]
a | b | c | d | |
---|---|---|---|---|
0 | 11 | aa | 9 | 1 |
1 | 22 | bb | 8 | 2 |
也可按照列号选取某列,如选取第二列
df.iloc[:,[1]]
b | |
---|---|
0 | aa |
1 | bb |
2 | cc |
3 | dd |
当然也可以按照行号选取某行某列,比如选取第0行第2列
df.iloc[0:1,[1]]
b | |
---|---|
0 | aa |
当然也可以根据行号选取多行多列,比如选取第0-2行第0-2列
df.iloc[0:2,[0,1]]
a | b | |
---|---|---|
0 | 11 | aa |
1 | 22 | bb |
loc通过标签选取数据
.loc()函数是通过标签选取数据,如果搞不懂什么是标签什么是位置
比如我们选取第1行数据
df.loc[0] #选取第1行 因为第1行的行号是0所以和iloc效果相同
a 11
b aa
c 9
d 1
Name: 0, dtype: object
再创建一个df1用于示例
data = {'a':[11,22,33,44],
'b':['aa','bb','cc','dd'],
'c':[9,8,7,6],
'd':[1,2,3,4]
}
df1 = DataFrame(data,index = ['a','b','c','d'])
df1
a | b | c | d | |
---|---|---|---|---|
a | 11 | aa | 9 | 1 |
b | 22 | bb | 8 | 2 |
c | 33 | cc | 7 | 3 |
d | 44 | dd | 6 | 4 |
按标签选取第b行
df1.loc['b']
a 22
b bb
c 8
d 2
Name: b, dtype: object
按标签选取多行
df1.loc['b':]
a | b | c | d | |
---|---|---|---|---|
b | 22 | bb | 8 | 2 |
c | 33 | cc | 7 | 3 |
d | 44 | dd | 6 | 4 |
按标签选取某列
df1.loc[:,['a']] #通过标签选取某列
a | |
---|---|
a | 11 |
b | 22 |
c | 33 |
d | 44 |
按标签选取多列
df1.loc[:,['a','b']]
a | b | |
---|---|---|
a | 11 | aa |
b | 22 | bb |
c | 33 | cc |
d | 44 | dd |
按标签选取某行某列
df1.loc['a',['b','c']]
b aa
c 9
Name: a, dtype: object
ix 简单粗暴 混合使用
ix就是把iloc和loc语法综合了,爱用哪个用哪个,不过在有些版本的pandas中取消了ix函数,我们再看一下df
df
a | b | c | d | |
---|---|---|---|---|
0 | 11 | aa | 9 | 1 |
1 | 22 | bb | 8 | 2 |
2 | 33 | cc | 7 | 3 |
3 | 44 | dd | 6 | 4 |
使用ix可以像iloc通过行号选取
df.ix[1]
a 22
b bb
c 8
d 2
Name: 1, dtype: object
也可以像loc通过标签选取
df1.ix['a']
a 11
b aa
c 9
d 1
Name: a, dtype: object
可以通过行号选取指定位置的数据
df1.ix[3,3] #通过行号选取指定位置的数据
4
可以通过标签选取指定位置的数据
df1.ix['a','a'] #通过标签选取指定位置的数据
11
按照条件选取数据
掌握了上面的方法我们就可以按照条件选取数据,比如通过单个条件选取数据
df1.loc[df1['a']==11]
a | b | c | d | |
---|---|---|---|---|
a | 11 | aa | 9 | 1 |
也可以通过多个条件选取数据
df1.loc[(df1['a']==11)&(df1['d']==1)]
a | b | c | d | |
---|---|---|---|---|
a | 11 | aa | 9 | 1 |
以上就是pandas中数据切片函数
.loc()
、
.iloc()
、
.ix()
的区别与用法,
学会了吗
以上是关于Pandas中iloc/loc/ix区别的主要内容,如果未能解决你的问题,请参考以下文章
text [检查特定的数据片段]取自论文但有意思应用。 #python #pandas
jquery 对象的 heightinnerHeightouterHeight 的区别以及DOM 元素的 clientHeightoffsetHeightscrollHeightoffset(代码片段