引言
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
"""