首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >01.loc & iloc & ix 区别使用标签选取数据

01.loc & iloc & ix 区别使用标签选取数据

作者头像
用户1250179
发布2018-08-02 16:37:07
8140
发布2018-08-02 16:37:07
举报
文章被收录于专栏:数说戏聊数说戏聊

当用行号索引的时候, 尽量用 iloc 来进行索引; 而用标签索引的时候用 loc , ix 尽量别用。

使用标签选取数据

df.loc[行标签,列标签]
df.loc['a':'b']#选取ab两行数据
df.loc[:,'one']#选取one列的数据

df.loc的第一个参数是行标签,第二个参数是列标签(可选参数,默认为所有列标签),两个参数既可以是列表也可以是单个字符,如果两个参数都为列表则返回的是DataFrame,否则为Series。

  • loc根据DataFrame的具体标签选取列。
  • iloc根据标签所在位置选取列,从0开始计数。

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)

Out[3]: 
   a  b  c
d  1  2  3
e  4  5  6

df.loc['d']
Out[4]: 
a    1
b    2
c    3
Name: d, dtype: int64

df.iloc[0]
Out[5]: 
a    1
b    2
c    3
Name: d, dtype: int64

df3.iloc[1]
Out[6]: 
a    4
b    5
c    6
Name: e, dtype: int64

df.loc['d':]
Out[7]: 
   a  b  c
d  1  2  3
e  4  5  6

#loc扩展:索引某行某列
df.loc['d',['b','c']]
Out[8]: 
b    2
c    3
Name: d, dtype: int64

#loc扩展:索引某列
df.loc[:,['c']]
Out[13]: 
   c
d  3
e  6

获取某列数据最直接方式是df.[列标签],但当列标签未知时可以通过这种方式获取列数据。需要注意,dataframe的索引[1:3]是包含1,2,3的,与平时的不同。

iloc:通过行号获取行数据

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)

Out[15]: 
   a  b  c
d  1  2  3
e  4  5  6

#要获取哪一行就输入该行数字
df.iloc[1]
Out[17]: 
a    4
b    5
c    6
Name: e, dtype: int64

#通过行标签索引会报错
df3.iloc['a']
TypeError: cannot do positional indexing on 
<class 'pandas.core.indexes.base.Index'> 
with these indexers [a] of <class 'str'>

#通过行号可以索引多行
df3.iloc[0:]
Out[19]: 
   a  b  c
d  1  2  3
e  4  5  6

#iloc索引列数据
df3.iloc[:,[1]]
Out[21]: 
   b
d  2
e  5

ix:结合前两种的混合索引

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)

Out[22]: 
   a  b  c
d  1  2  3
e  4  5  6

#通过行号索引
df.ix[1]
Out[23]: 
a    4
b    5
c    6
Name: e, dtype: int64

#通过行标签索引
df.ix['e']
Out[25]: 
a    4
b    5
c    6
Name: e, dtype: int64
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.06.28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用标签选取数据
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档