看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
.iloc[] 是纯整数位置为基础的位置选择索引,主要基于整数位置(从0到轴的长度-1),但也可以与布尔数组一起使用。DataFrame 和 Series 都支持这个方法。
逻辑与 loc 类似,可以参考。
对于 DataFrame 来说可以可以支持行和列两个元素:
pandas.DataFrame.iloc[row_index, column_index]
元素位置上为数据的数字索引,是纯整数,代表数据的位置,取值从 0 到轴的长度-1,但也可以与布尔数组一起使用。可以为以下形式:
如果请求的索引器越界,.iloc 将引发 IndexError,但允许越界索引的切片索引器除外(这符合 python/numpy 切片语义)。
单个标签:
# 代表索引,如果是字符需要加引号
df.loc[0] # 选择索引为 0 的行
df.loc[8]
单个列表标签:
df.loc[[0,5,10]] # 指定索引 0,5,10 的行
df.loc[['Eli', 'Ben']] # 如果索引是 name
# 真假选择,长度要和索引一样
df.loc[[False, True]*50] # 为真的列显示,隔一个显示一个
带标签的切片,包括起始和停止start:stop
, 可以其中只有一个,返回包括它们的数据:
df.loc[0:5] # 索引切片, 代表0-5行,包括5
df.loc['2010':'2014'] # 如果索引是时间可以用字符查询
df.loc[:] # 所有
# 本方法支持 Series
# 列筛选,必须有行元素:
dft.loc[:, ['Q1', 'Q2']] # 所有行,Q1 和 Q2两列
dft.loc[:, ['Q1', 'Q2']] # 所有行,Q1 和 Q2两列
dft.loc[:10, 'Q1':] # 0-10 行,Q1后边的所有列
以下是一些案例:
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
'''
只为行编制索引,使用标量整数。
type(df.iloc[0])
# <class 'pandas.core.series.Series'>
df.iloc[0]
'''
a 1
b 2
c 3
d 4
Name: 0, dtype: int64
'''
一个整数列表。
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
'''
使用切片对象。
df.iloc[:3]
'''
a b c d
0 1 2 3 4
1 100 200 300 400
2 1000 2000 3000 4000
'''
使用与索引长度相同的布尔掩码。
df.iloc[[True, False, True]]
'''
a b c d
0 1 2 3 4
2 1000 2000 3000 4000
'''
可调用变量,对于方法链很有用。传递给 lambda 的 x 是正在切片的数据帧。这将选择索引标签为偶数的行。
df.iloc[lambda x: x.index % 2 == 0]
'''
a b c d
0 1 2 3 4
2 1000 2000 3000 4000
'''
接下来看看两个轴的索引,可以混合索引和列的索引器类型。使用:选择整个轴,用标量整数。
df.iloc[0, 1]
# 2
整数列表
df.iloc[[0, 2], [1, 3]]
'''
b d
0 2 4
2 2000 4000
'''
使用切片对象。
df.iloc[1:3, 0:3]
'''
a b c
1 100 200 300
2 1000 2000 3000
'''
使用长度与列匹配的布尔数组。
df.iloc[:, [True, False, True, False]]
'''
a c
0 1 3
1 100 300
2 1000 3000
'''
一个需要Series或DataFrame的可调用函数。
df.iloc[:, lambda df: [0, 2]]
'''
a c
0 1 3
1 100 300
2 1000 3000
'''
可以调用 iloc[]
的对象还有以下对象:
更新时间:2021-08-18 14:56:03 标签:pandas iloc 查询