pandas ix & iloc &loc 的联系和区别
参考了几个博客,做了以下整理,如有雷同,是我抄别人的。。
参考链接:https://blog.csdn.net/xw_classmate/article/details/51333646
https://blog.csdn.net/hecongqing/article/details/61927615
loc——通过行标签索引行数据
iloc——通过行号索引行数据
ix——通过行标签或者行号索引行数据(基于loc和iloc 的混合)
同理,索引列数据也是如此!
举例说明:
1、分别使用loc、iloc、ix 索引第一行的数据:
(1)loc
import pandas as pd
data=[[1,2,3],[4,5,6]]
index=['a','b']#行号
columns=['c','d','e']#列号
df=pd.DataFrame(data,index=index,columns=columns)#生成一个数据框
#print df.loc['a']
'''
c 1
d 2
e 3
'''
print df.loc[0]
#这个就会出现错误
'''
TypeError: cannot do label indexing on <class 'pandas.indexes.base.Index'>
with these indexers [1] of <type 'int'>
'''
(2)iloc
import pandas as pd
data=[[1,2,3],[4,5,6]]
index=['a','b']#行号
columns=['c','d','e']#列号
df=pd.DataFrame(data,index=index,columns=columns)#生成一个数据框
print df.iloc[0]
'''
c 1
d 2
e 3
'''
print df.iloc['a']
'''
TypeError: cannot do positional indexing on <class 'pandas.indexes.base.Index'>
with these indexers [a] of <type 'str'>
'''
(3)ix
import pandas as pd
data=[[1,2,3],[4,5,6]]
index=['a','b']#行号
columns=['c','d','e']#列号
df=pd.DataFrame(data,index=index,columns=columns)#生成一个数据框
print df.ix[0]
'''
c 1
d 2
e 3
'''
print df.ix['a']
'''
c 1
d 2
e 3
'''
2、分别使用loc、iloc、ix 索引第一列的数据:
import pandas as pd
data=[[1,2,3],[4,5,6]]
index=['a','b']#行号
columns=['c','d','e']#列号
df=pd.DataFrame(data,index=index,columns=columns)#生成一个数据框
print df.loc[:,['c']]
print df.iloc[:,[0]]
print df.ix[:,['c']]
print df.ix[:,[0]]
#结果都为
'''
c
a 1
b 4
'''
3、分别使用loc、iloc、ix 索引多行的数据:
import pandas as pd
data=[[1,2,3],[4,5,6]]
index=['a','b']#行号
columns=['c','d','e']#列号
df=pd.DataFrame(data,index=index,columns=columns)#生成一个数据框
print df.loc['a':'b']
print df.iloc[0:1]
print df.ix['a':'b']
print df.ix[0:1]
#结果都为
'''
c d e
a 1 2 3
b 4 5 6
'''
4、分别使用loc、iloc、ix 索引多列的数据:
import pandas as pd
data=[[1,2,3],[4,5,6]]
index=['a','b']#行号
columns=['c','d','e']#列号
df=pd.DataFrame(data,index=index,columns=columns)#生成一个数据框
print df.loc[:,'c':'d']
print df.iloc[:,0:2]
print df.ix[:,'c':'d']
print df.ix[:,0:2]
#结果都为
'''
c d
a 1 2
b 4 5
'''
1.3 如果想索引列数据,像这样做会报错
import pandas as pd
data = [[1,2,3],[4,5,6]]
index = ['d','e']
columns=['a','b','c']
df = pd.DataFrame(data=data, index=index, columns=columns)
print df.loc['a']
'''
KeyError: 'the label [a] is not in the [index]'
'''
1.4 loc可以获取多行数据
import pandas as pd
data = [[1,2,3],[4,5,6]]
index = ['d','e']
columns=['a','b','c']
df = pd.DataFrame(data=data, index=index, columns=columns)
print df.loc['d':]
'''
a b c
d 1 2 3
e 4 5 6
'''
1.5 loc扩展——索引某行某列
import pandas as pd
data = [[1,2,3],[4,5,6]]
index = ['d','e']
columns=['a','b','c']
df = pd.DataFrame(data=data, index=index, columns=columns)
print df.loc['d',['b','c']]
'''
b 2
c 3
'''
1,6 loc扩展——索引某列
import pandas as pd
data = [[1,2,3],[4,5,6]]
index = ['d','e']
columns=['a','b','c']
df = pd.DataFrame(data=data, index=index, columns=columns)
print df.loc[:,['c']]
'''
c
d 3
e 6
'''
当然获取某列数据最直接的方式是df.[列标签],但是当列标签未知时可以通过这种方式获取列数据。
需要注意的是,dataframe的索引[1:3]是包含1,2,3的,与平时的不同。
上一篇: http请求的格式
下一篇: #13 让代码变得Pythonic
推荐阅读
-
pandas ix & iloc &loc 的联系和区别
-
pandas中loc、iloc、ix的区别和使用
-
python pandas中ix,iloc,loc的区别
-
pandas中ix loc iloc的区别
-
pandas ix &iloc &loc的区别
-
浅谈pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)
-
Python Pandas DataFrame:查询数据or选择数据(selection)之loc,iloc,at,iat,ix的用法和区别
-
详谈Pandas中iloc和loc以及ix的区别
-
pandas ix &iloc &loc的区别
-
Pandas中关于数据索引iloc()和loc()的用法和区别