pandas.DataFrame.iloc函数
property DataFrame.iloc:基于整数的用于选定所需数据的函数。
函数输入:
- 单个整数;
- 整数型list或者array;
- 切片;
- 布尔型array;
- 可调用函数作为输入,但所调用函数返回的结果需要为上述之一。
1 输入单个整数
#构造数据
mydict = [{'a': 1, 'b': 2, 'c': 3, 'd': 4},
{'a': 100, 'b': 200, 'c': 300, 'd': 400},
{'a': 1000, 'b': 2000, 'c': 3000, 'd': 4000 }]
df = pd.DataFrame(mydict)
df
运行结果:
#输入单个整数
df.iloc[0]
#结果:
a 1
b 2
c 3
d 4
Name: 0, dtype: int64
df.iloc[1]
结果:
a 100
b 200
c 300
d 400
Name: 1, dtype: int64
type(df.iloc[0])
#结果:
pandas.core.series.Series
总结:单独输入一个整数时,返回的是行索引对应的一个Series
2 输入list或者array
df.iloc[[0]]
结果:
df.iloc[[0,1]]
结果:
总结:输入一个list,返回list元素对应的行。此时返回的数据类型为一个数据框。
3 输入切片
df.iloc[:3]
结果:
总结:切片的本质和list差不多,返回切片对应的行。此时返回的数据类型也为一个数据框。
4 输入布尔型array或list
df.iloc[[True, False, True]]
结果:
总结:true则返回对应的行,False则不返回。
5 调用函数
df.iloc[lambda x: x.index % 2 == 0]
结果:
总结:返回索引为偶数的行,此时调用函数返回类型相当于切片。
6 扩展
上述检索均在行数上检索,默认返回全部列数。可以在上面的各类情况中,再加上对应的输入数据,来检索对应的列。
#1-1输入两个整数
df.iloc[1,3]
#返回:400
#2-1输入两个list
df.iloc[[0, 2], [1, 3]]
#返回:
b d
0 2 4
2 2000 4000
#3-1输入两个切片
df.iloc[1:3, 0:3]
#返回:
a b c
1 100 200 300
2 1000 2000 3000
#4-1在列数上输入布尔列表
df.iloc[:, [True, False, True, False]]
#返回:
a c
0 1 3
1 100 300
2 1000 3000
#5-1在列数上调用函数
df.iloc[:, lambda df: [0, 2]]
返回:
a c
0 1 3
1 100 300
2 1000 3000
参考资料:
pandas参考文档