Pandas iloc函数用法:s1.iloc[:,0].min()报错原因及含义解析
Pandas Series使用iloc[:,0]报错的原因及表达式含义解析
一、报错原因
咱们先看你这段代码:
import pandas as pd import numpy as np s1 = pd.Series(np.random.rand(5), index=list(range(0, 10, 2))) s1.iloc[:,0].min()
报错的核心问题在于:你创建的s1是一维的Series对象,但误用了二维数据的索引语法。
Pandas的iloc索引规则很明确:
- 对于一维的
Series,只能使用一维索引方式,比如iloc[0]取第一个元素、iloc[:3]取前3个元素; - 而
[:,0]是二维索引(逗号分隔行、列维度)的写法,只有二维的DataFrame才支持这种索引——Series根本没有“列”这个维度,所以Pandas会直接抛出索引错误。
二、表达式s1.iloc[:,0].min()的含义
如果把s1换成二维的DataFrame,这个表达式的含义就清晰了:
iloc[:,0]::代表选取所有行,0代表选取第0列,合起来就是取整个DataFrame的第一列数据;.min():对选取到的这一列数据计算最小值。
三、修正方案
如果只是想求s1这个Series的最小值,完全不用绕弯子,直接写:
s1.min()
如果非要用iloc的写法(虽然没必要),可以先把Series转成DataFrame再操作:
s1.to_frame().iloc[:,0].min()
内容的提问来源于stack exchange,提问作者user1216456
相关产品推荐
相关产品推荐

