python pandas (ix & iloc &loc) 的区别

本文详细介绍了Pandas库中DataFrame的三种索引方法:loc、iloc及ix,并通过实例展示了如何利用这些方法来选取行和列数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
'''
### Pandas 中 `ix`、`iloc` 和 `loc` 的区别及用法 #### 1. `loc` `loc` 是基于标签的索引器,主要用于通过行和列的标签访问数据。对于具有自定义索引的数据框来说非常有用。 ```python import pandas as pd import numpy as np data = pd.DataFrame( np.random.randint(100, size=(10, 10)), columns=[&#39;a&#39;, &#39;b&#39;, &#39;c&#39;, &#39;d&#39;, &#39;e&#39;, &#39;f&#39;, &#39;g&#39;, &#39;h&#39;, &#39;i&#39;, &#39;j&#39;], index=[&#39;A&#39;, &#39;B&#39;, &#39;C&#39;, &#39;D&#39;, &#39;E&#39;, &#39;F&#39;, &#39;G&#39;, &#39;H&#39;, &#39;I&#39;, &#39;J&#39;] ) # 使用 loc 访问特定行列组合 print(data.loc[&#39;A&#39;:&#39;C&#39;, [&#39;a&#39;, &#39;b&#39;]]) ``` 此代码片段展示了如何利用 `loc` 来选取从 A 到 C 行以及 a 和 b 这两列的内容[^3]。 #### 2. `iloc` 与 `loc` 不同的是,`iloc` 主要用于整数位置上的索引,即它依据数组的位置而非标签来进行定位。 ```python # 使用 iloc 获取前五行前三列的数据 print(data.iloc[:5, :3]) ``` 这段代码说明了怎样运用 `iloc` 提取位于 DataFrame 前五条记录中的头三个字段的信息。 #### 3. `ix` 需要注意的是,在较新的版本中已经不推荐使用 `ix` 属性,并且在未来可能会被移除。这是因为其行为有时会让人感到困惑,因为它既支持按位又支持按名索引的方式。因此建议优先考虑使用更明确的 `loc` 或者 `iloc` 方法代替之[^4]。 为了更好地理解这三种索引机制之间的差异: - 当确切知道想要获取哪几行/列的名字时应该选用 `loc`; - 如果是按照数值下标来指定范围,则应采用 `iloc`. - 对于混合模式的需求场景(已废弃),过去曾有 `ix` 可供选择但现在不再提倡使用.
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值