DataFrame.iloc - 使用索引访问数据帧的子集
使用DataFrame的iloc属性访问数据帧的子集,采用整数索引进行定位。
属性原型
DataFrame.iloc[loc-expr]
- loc-expr:定位表达式,可以是:
- 整数,例如:5
- 整数列表,例如:[4,3,0]
- 证书切片对象,例如:1:7
- 布尔数组
- callable函数,其参数为数据帧对象,返回值为要切片的索引
示例代码
下面的代码使用Python字典创建一个DataFrame对象:
>>> 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
a b c d
0 1 2 3 4
1 100 200 300 400
2 1000 2000 3000 4000
下面的代码使用一个整数标量定位第0行成员,返回一个序列:
>>> type(df.iloc[0])
<class 'pandas.core.series.Series'>
>>> df.iloc[0]
a 1
b 2
c 3
d 4
Name: 0, dtype: int64
下面的代码使用一个整数列表定位第0行成员,返回一个数据帧:
>>> df.iloc[[0]]
a b c d
0 1 2 3 4
>>> type(df.iloc[[0]])
<class 'pandas.core.frame.DataFrame'>
下面的代码切片数据帧的前两行:
>>> df.iloc[[0, 1]]
a b c d
0 1 2 3 4
1 100 200 300 400
下面的代码返回包含前3行数据的数据帧:
>>> df.iloc[:3]
a b c d
0 1 2 3 4
1 100 200 300 400
2 1000 2000 3000 4000
下面的代码使用布尔数组选中第0行和第2行数据:
>>> df.iloc[[True, False, True]]
a b c d
0 1 2 3 4
2 1000 2000 3000 4000
下面的代码使用一个callable函数选中偶数行数据:
>>> df.iloc[lambda x: x.index % 2 == 0]
a b c d
0 1 2 3 4
2 1000 2000 3000 4000
下面的代码选中第0行第1列成员:
>>> df.iloc[0, 1]
2
下面的代码选中0行和2行、1列和3列的数据:
>>> df.iloc[[0, 2], [1, 3]]
b d
0 2 4
2 2000 4000
下面的代码选中1行和2行、0列到2列的数据:
>>> df.iloc[1:3, 0:3]
a b c
1 100 200 300
2 1000 2000 3000
下面的代码使用布尔数组选中所有行的0列和2列:
>>> df.iloc[:, [True, False, True, False]]
a c
0 1 3
1 100 300
2 1000 3000
下面的代码使用一个callable函数选中所有行的0列和2列:
>>> df.iloc[:, lambda df: [0, 2]]
a c
0 1 3
1 100 300
2 1000 3000