Pandas中.iloc[0:1]与.iloc[0]的区别?切片1是排他还是包含?
Pandas中.iloc[0:1]与.iloc[0]的区别解析
切片的排他性
Pandas的.iloc采用左闭右开的切片规则,所以0:1里的1是排他的——只会选中索引为0的行,不会包含索引1的行。
返回类型的区别
df.iloc[0]:直接提取单行,返回的是Series类型,也就是一维序列,索引对应原DataFrame的列名,值是该行各列的内容。df.iloc[0:1]:用切片语法选行,哪怕只选一行,返回的还是DataFrame类型,是二维表格结构,保留原DataFrame的列索引和行索引(此时行索引仅包含0)。
函数报错的原因
你碰到的报错,本质是目标函数要求传入参数为Series类型,但你用df.iloc[0:1]传入的是DataFrame,类型不匹配导致报错。而df.iloc[0]返回的正好是符合要求的Series,所以能正常运行函数。
小技巧:用切片得到Series
如果想用切片方式获取单行的Series,可以在切片后加.squeeze()方法:
df.iloc[0:1].squeeze()
这样就能把单行DataFrame压缩成Series,和df.iloc[0]的结果完全一致。
内容的提问来源于stack exchange,提问作者Shashank Dwivedi
相关产品推荐
相关产品推荐

