使用前,应该从Python中导入pandas库,iloc是Pandas库中DataFrame和Series对象的一个方法,用于通过整数位置(索引)选择数据。iloc代表"integer location",它允许你通过整数位置来访问数据,而不是通过标签。
用法示例如下:
iloc后面应该接[ , ],而不是()
逗号前面表示行,后面表示列
import pandas as pd
dict = {"name":['Andy','Mike','Curry'],
"age":[15,12,19],
"city":['wuhan','hanghzou','nanjing']
}
df = pd.DataFrame(dict)
print(df)
print("#"*30)
data = df.iloc[:,0:2]
print(data)
name age city
0 Andy 15 wuhan
1 Mike 12 hanghzou
2 Curry 19 nanjing
##############################
name age
0 Andy 15
1 Mike 12
2 Curry 19
另外的例子:
import pandas as pd
dict = {"name":['Andy','Mike','Curry'],
"age":[15,12,19],
"city":['wuhan','hanghzou','nanjing']
}
df = pd.DataFrame(dict)
print(df)
print("#"*30)
data = df.iloc[0,1]
print(data) #output:15
*[ :]切片:
这里应该仔细阐述一下[ :]
如果是列表,请注意转换为Series格式
import pandas as pd
list = [1,2,3,4,5,6,7,8]
se = pd.Series(list)
print(se.iloc[:5])
0 1
1 2
2 3
3 4
4 5
dtype: int64
另外,正序(0开始)和反序(-1开始)可以混合使用:
下面的列子是前面是正数,后面是负数,如果前负后正,是同样的前闭后开,但是如果正数超过了负数所在的位次,将返回空的Series,见第二个例子:
import pandas as pd
list = [1,2,3,4,5,6,7,8]
se = pd.Series(list)
print(se.iloc[2:-2])
2 3
3 4
4 5
5 6
dtype: int64
接上第二个例子:
import pandas as pd
list = [1,2,3,4,5,6,7,8]
se = pd.Series(list)
print(se.iloc[7:-2]) #output:Series([], dtype: int64)
还有一个经典的例子:
**iloc[ : , : -1]**表示剔除最后一行
import pandas as pd
data = {
'A': [1, 2, 3],
'B': [4, 5, 6],
'C': [7, 8, 9],
'D': [10, 11, 12]
}
print(df)
print("#"*30)
df = pd.DataFrame(data)
print(df.iloc[:,:-1])
#output:
A B C D
0 1 4 7 10
1 2 5 8 11
2 3 6 9 12
##############################
A B C
0 1 4 7
1 2 5 8
2 3 6 9
如果用反序的话,同样是前闭后开:
import pandas as pd
list = [1,2,3,4,5,6,7,8]
se = pd.Series(list)
print(se.iloc[-7:-2])
1 2
2 3
3 4
4 5
5 6
dtype: int64
还有一种格式是带有步长的:
[开始位置 : 结束位置 :步长]
import pandas as pd
list = [1,2,3,4,5,6,7,8]
se = pd.Series(list)
print(se.iloc[1:7:2])
#output:
1 2
3 4
5 6
dtype: int64
有一种步长为负数的情况,表示倒着取:,起止顺序也得倒着写:
import pandas as pd
list = [1,2,3,4,5,6,7,8]
se = pd.Series(list)
print(se.iloc[7:1:-2])码片
#output:
7 8
5 6
3 4
dtype: int64
import pandas as pd
list = [1,2,3,4,5,6,7,8]
se = pd.Series(list)
print(se.iloc[-1:-7:-2])
#output:
7 8
5 6
3 4
dtype: int64