Python之pandas.iloc和pandas.loc使用用法

本文深入探讨了Pandas库中iloc和.loc方法的使用,通过实例演示了基于整数位置和标签的索引选取及数据赋值操作,同时对比了两种方法在Series和DataFrame上的应用差异。

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

引言

pandas.iloc方法提供了基于整数的索引方式,跟 python自身的list 的索引方式是十分类似的!

栗子

import numpy as np
import pandas as pd
np.random.seed(1)  # 为了使得生成的随机数固定,这里设置了随机数种子
s1 = pd.Series(np.random.randn(5), index=list(range(0, 10, 2)))

print(s1)

结果为:

0    1.624345
2   -0.611756
4   -0.528172
6   -1.072969
8    0.865408
dtype: float64

print(s1.iloc[:3])

结果为:

0    1.624345
2   -0.611756
4   -0.528172
dtype: float64

print(s1.iloc[3])

结果为:

-1.0729686221561705

上述同样的操作通过.loc方法实现如下:

print(s1.loc[:4])

结果为:

0    1.624345
2   -0.611756
4   -0.528172
dtype: float64

print(s1.loc[6])

结果为:

-1.0729686221561705

通过一个索引或者是一个索引切片来进行赋值:

s1.iloc[:3] = 0
print(s1)

结果为:

0    0.000000
2    0.000000
4    0.000000
6   -1.072969
8    0.865408
dtype: float64
s1.iloc[4] = 1.11
print(s1)

结果为:

0    0.000000
2    0.000000
4    0.000000
6   -1.072969
8    1.110000
dtype: float64

拓展

pandas的DataFrame中.loc方法并没有很大区别

import numpy as np
import pandas as pd
np.random.seed(1)  # 为了使得生成的随机数固定,这里设置了随机数种子
df1 = pd.DataFrame(np.random.randn(5, 4),
                    index=list(range(0, 10, 2)),
                    columns=list(range(0, 8, 2)))
print(df1)

"""
          0         2         4         6
0  1.624345 -0.611756 -0.528172 -1.072969
2  0.865408 -2.301539  1.744812 -0.761207
4  0.319039 -0.249370  1.462108 -2.060141
6 -0.322417 -0.384054  1.133769 -1.099891
8 -0.172428 -0.877858  0.042214  0.582815
"""

print(df1.iloc[1:4, 1:3])
"""
          2         4
2 -2.301539  1.744812
4 -0.249370  1.462108
6 -0.384054  1.133769
"""
print(df1.iloc[[0, 2], [0, 2]])
"""
          0         4
0  1.624345 -0.528172
4  0.319039  1.462108
"""
print(df1.iloc[1:4, :])
"""
          0         2         4         6
2  0.865408 -2.301539  1.744812 -0.761207
4  0.319039 -0.249370  1.462108 -2.060141
6 -0.322417 -0.384054  1.133769 -1.099891
"""
print(df1.iloc[:, 1:3])
"""
          2         4
0 -0.611756 -0.528172
2 -2.301539  1.744812
4 -0.249370  1.462108
6 -0.384054  1.133769
8 -0.877858  0.042214
"""
print(df1.iloc[1, 1])  # -2.3015386968802827
print(df1.iat[1, 1])   # -2.3015386968802827
print(df1.iloc[1])
"""
0    0.865408
2   -2.301539
4    1.744812
6   -0.761207
Name: 2, dtype: float64
"""
print(df1.xs(2))
"""
0    0.865408
2   -2.301539
4    1.744812
6   -0.761207
Name: 2, dtype: float64
"""
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值