iloc 和 loc 包括不包括结尾写的那个行(列)?
不一样!
iloc[istart:iend] exclusive on iend 不包括结尾那行(列)!
loc[start:end] inclusive on end 包括结尾那行(列)!
若只选择一行,它俩使用起来完全一样,都是显示该 index 值的那行。
import pandas as pd
df = pd.DataFrame({'x': [1, 2, 3, 4, 2, 6, 8, 4], 'y': [2, 3, 5, 7, 4, 7, 3, 4], 'z': [0, 1, 1, 0, 2, 7, 9, 4]})
df
Output:
x y z
0 1 2 0
1 2 3 1
2 3 5 1
3 4 7 0
4 2 4 2
5 6 7 7
6 8 3 9
7 4 4 4
选择好几行
iloc
df.iloc[:5, :]
Output:
是前5行,index=0 到 index=4 的行,不包括 index=5 那行
一共选择了5行!
x y z
0 1 2 0
1 2 3 1
2 3 5 1
3 4 7 0
4 2 4 2
loc
df.loc[:5, :]
Output:
居然是前6行,是 index=0 到 index=5 的行,包括 index=5 那行
一共选择了6行!
记住:loc写什么,就显示到什么地方
x y z
0 1 2 0
1 2 3 1
2 3 5 1
3 4 7 0
4 2 4 2
5 6 7 7
1 2
iloc[istart:iend] exclusive on iend 不包括结尾那行(列)!
loc[start:end] inclusive on end 包括结尾那行(列)!
如果选择列呢?
iloc
df.iloc[:, :2]
Output:
还是前两列,index=0 到 index=1
x y
0 1 2
1 2 3
2 3 5
3 4 7
4 2 4
5 6 7
6 8 3
7 4 4
loc
# df.loc[:, :2] # 没这么写的,报错
df.loc[:, df.columns[:2]]
Output:
还是前两列,index=0 到 index=1 注意哦,因为用的是df.columns[]
x y
0 1 2
1 2 3
2 3 5
3 4 7
4 2 4
5 6 7
6 8 3
7 4 4
只选择一行
它俩使用起来完全一样。
iloc
df.iloc[5, :]
Output:
x 6
y 7
z 7
Name: 5, dtype: int64
loc
df.loc[5, :]
Output:
x 6
y 7
z 7
Name: 5, dtype: int64