首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在对熊猫数据帧进行索引时,为什么.iloc可以工作,而.loc不能

在对熊猫数据帧进行索引时,可以使用.iloc和.loc两种方法。其中.iloc是基于整数位置进行索引,而.loc是基于标签进行索引。

.iloc是通过传递整数位置来选择数据的,可以接受整数、整数列表或布尔索引。例如,可以使用.iloc[0]选择第一行的数据,或者使用.iloc[[0, 1, 2]]选择前三行的数据。这种方法对于需要基于位置进行选择的情况非常有效。

而.loc是通过传递标签来选择数据的,可以接受标签、标签列表或布尔索引。例如,可以使用.loc['label']选择指定标签的数据,或者使用.loc[['label1', 'label2', 'label3']]选择多个标签的数据。这种方法对于需要基于标签进行选择的情况非常有效。

在对熊猫数据帧进行索引时,为什么.iloc可以工作,而.loc不能,可能有以下几种情况:

  1. 数据帧的索引是基于整数位置而不是标签。如果数据帧的索引是整数位置,那么使用.iloc会按照整数位置进行选择,而使用.loc则无法按照标签进行选择。
  2. 数据帧的索引中包含重复的标签。如果数据帧的索引中存在重复的标签,使用.loc进行索引可能会返回多行数据,而这在一些情况下可能会导致冲突或歧义。为了避免这种情况,使用.iloc可以确保按照整数位置进行选择,而不会受到重复标签的影响。
  3. 数据帧的索引中包含非字符串类型的标签。如果数据帧的索引中包含非字符串类型的标签(如整数或日期类型),使用.loc可能会出现错误。这是因为.loc默认将标签作为字符串处理,如果标签不是字符串类型,则无法正确匹配索引。

总结来说,.iloc可以工作是因为它基于整数位置进行索引,而不受标签的影响。而.loc在某些情况下可能无法工作,可能是因为数据帧的索引是基于整数位置而不是标签,或者数据帧的索引中包含重复的标签或非字符串类型的标签。在选择索引方法时,需要根据具体情况选择合适的方法来进行索引操作。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Pandas 秘籍:1~5

loc索引器仅按索引标签进行选择,这与 Python 词典的工作方式类似。 准备 .loc和。iloc与序列和数据一起使用。...就个人而言,我总是在对进行切片时使用这些索引器,因为从来没有确切地知道我在做什么。 更多 重要的是要知道,这种延迟切片不适用于列,仅适用于数据的行和序列,也不能同时选择行和列。...如步骤 5 所示,布尔索引可以与.loc索引器配合使用,同时执行布尔索引和单个列选择。 精简的数据易于手动检查 逻辑是否正确实现。 布尔索引与.iloc索引运算符不能完全兼容。...几乎可以在同一间查找每个索引位置,不管其长度如何。 更多 布尔选择比索引选择具有更大的灵活性,因为可以对任意数量的列进行条件调整。 在此秘籍中,我们使用单列作为索引。...布尔数组的整数位置与数据的整数位置对齐,并且过滤器按预期进行。 这些数组也可以与.loc运算符一起使用,但是它们对于.iloc是必需的。 步骤 6 和 7 显示了如何按列不是按行进行过滤。

37.5K10

数据科学 IPython 笔记本 7.5 数据索引和选择

索引器:lociloc,和ix 这些切片和索引惯例可能会引起混淆。...lociloc的显式特性,使它们在维护清晰可读的代码非常有用;特别是在整数索引的情况下,我建议使用这两者,来使代码更容易阅读和理解,并防止由于混合索引/切片约定导致的细微错误。...数据中的数据选择 回想一下,DataFrame在很多方面都类似二维或结构化数组,在其它方面莱斯共享相同索引的Series结构的字典。在我们探索此结构中的数据选择,记住些类比是有帮助的。...作为二维数组的数据 如前所述,我们还可以将DataFrame视为扩展的二维数组。...在这里,Pandas 再次使用前面提到的lociloc和ix索引器。

1.7K20
  • 数据分析索引总结(上)Pandas单级索引

    ① 单行索引 df.loc[1103] 虽然这里的1103是整数, 但loc索引方式用的是索引标签, 不是默认整数索引(注意默认整数索引和标签索引这二者有时候是一样的) ② 多行索引 多行索引,需传入一个...list,不是多个索引 df.loc[[1102,2304]] 多行索引, 传入的必须是一个list, 不是两个或多个索引, 否则会报错 #以下索引报错 # TypeError: cannot do...和iloc的长处在于, 可以同时对列和行进行切片 df['Height'].head() 更简洁的使用列名标签索引的方式 df.Height.head() ④ 多列索引 df.loc[:,['Height...[:,'Height':'Math'].head() 还可以使用iloc的方式进行切片, 这时候传入的应该是默认整数索引, 从0开始, 并且切片的结尾是不包含的 df.iloc[:,4:7].head(...索引多列,传入的必须是一个list,不是多个列名标签--方括号应该有两层。

    5.1K40

    Pandas_Study01

    ,但特殊的同时与普通的一维数组不同 列表只能有从0开始的整数索引series则可以自定义标签索引,这一点来看,跟字典又比较相似,因此series又可以拥有类似字典的操作方式,series 的标签索引可以随时更新修改替换...DataFrame是一种表格型数据结构,它含有一组有序的列,每列可以是不同的值。DataFrame既有行索引,也有列索引,它可以看作是由Series组成的字典,不过这些Series公用一个索引。...data.loc[0:3] #按照名称取数据 data.iloc[0:3] #按照位置取数据 总结: 一般访问series 可以有三种方式,一是loc,通过标签索引访问,这种方式只能接受标签作为参数,...一是通过iloc 索引访问,只能接受整数索引,也不能添加逻辑判断的过滤条件,但它不受标签值的影响可以一直通过整数索引访问,在对series排序后如果想获取首个元素,就可以通过iloc 来访问,因为此时标签的顺序已经改变...对series 元素操作的方式 # 基本的,通过索引获取数据进行修改 s['test'] = 100 s[0] = 1 # 当然也可以通过iloc,at,iat等方式访问元素 # 添加元素 idx =

    19710

    Python实现k-近邻算法案例学习

    工作原理:给定一个已知标签类别的训练数据集,输入没有标签的新数据后,在训练数据集中找到与新数据最邻近的 k 个实例,如果这 k 个实例的多数属于某个类别,那么新数据就属于这个类别。...欧氏距离图片构建数据集rowdata = { "电影名称": ['功夫熊猫', '叶问3', '伦敦陷落', '代理情人', '新步步惊心', '谍影重重', '功夫熊猫', '美人鱼', '宝贝当家...train.iloc[:, n])}) dr = dist_l.sort_values(by = 'dist')[: k] re = dr.loc[:, 'labels']....:(train.iloc[:,1])}) dr = dist_l.sort_values(by='dist')[:k] re = dr.loc[:,'labels'].value_counts..., 3) # 97.8%六、算法优缺点优点(1)简单好用,容易理解,精度高,理论成熟,既可以用来做分类也可以用来做回归;(2)可用于数值型数据和离散型数据;(3)无数据输入假定;(4)适合对稀有事件进行分类

    1.1K40

    盘一盘 Python 系列 4 - Pandas (上)

    为什么不能只用 'idx_i' 呢?原因是 Python 会把 df['idx_i'] 当成切片 columns,然后发现属性中没有 'idx_i' 这一个字符,会报错的。...function) 来实现,两种方法都返回一组“正确”的索引,而且可以loc , iloc , [] 一起套用,具体形式有以下常见几种: df.loc[布尔索引, :] df.iloc[布尔索引...] df.loc[:, 调用函数] df.iloc[:, 调用函数] 读者可以想一想为什么第一组形式「常见」第二组形式「罕见」呢?...最好记的不易出错的是用基于位置的 at 和 loc,和基于标签的 iat 和 iloc,具体来说,索引用 at 和 iat,切片用 lociloc。带 i 的基于位置,不带 i 的基于标签。...用 MultiIndex 可以创建多层索引的对象,获取 DataFrame df 的信息可用 df.loc[1st].loc[2nd] df.loc[1st].iloc[2nd] df.iloc[1st

    6.2K52

    30 个 Python 函数,加速你的数据分析处理速度!

    可以使用 skiprows 参数从文件末尾选择行。Skiprows=5000 表示我们将在读取 csv 文件跳过前 5000 行。...df.isna().sum() 6.使用 lociloc 添加缺失值 使用 lociloc 添加缺失值,两者区别如下: loc:选择带标签 iloc:选择索引 我们首先创建 20 个随机索引进行选择...15.重置索引 您是否已经注意到上图的数据格式了。我们可以通过重置索引来更改它。 print(df_summary.reset_index()) ?...df[['Geography','Exited','Balance']].sample(n=6).reset_index(drop=True) 17.将特定列设置为索引 我们可以数据中的任何列设置为索引...30.设置数据样式 我们可以通过使用返回 Style 对象的 Style 属性来实现此目的,它提供了许多用于格式化和显示数据框的选项。例如,我们可以突出显示最小值或最大值。

    9.4K60

    Pandas知识点-索引和切片操作

    获取DataFrame中的一行数据不能直接用 data['行索引'] 或 data.行索引 的方式。 获取行数据也有两种方式,需要借助loc属性或iloc属性。...同时,loc属性和iloc属性都只支持“先行后列”,顺序不能反。 四、DataFrame的索引转换 ?...在使用loc属性和iloc属性,行索引和列索引必须同时为索引名或同时为数值索引,所以,经常需要对索引名和数值索引互相转换。...使用iloc进行切片操作,切片规则与Python基本的切片规则相同,传入的切片索引是左闭右开的(包含起始值,不包含结束值)。 ?...上面的索引互相转换方法,可以灵活地在切片中使用,在使用loc将数值索引转换成索引名,在使用iloc索引名转换成数值索引

    2.3K20

    关于python的索引

    写了几天程序,深刻地感受到python语言中(特指numpy、pandas)对于数据强大的索引能力。...特此总结一下: ilocloc的区别 https://www.cnblogs.com/ghllfl/p/8481576.html loc:通过行标签索引数据loc[n]表示索引的是第n行(index...是整数) loc[‘d’]表示索引的是第’d’行(index 是字符) iloc :通过行号获取行数据不能是字符 ix:结合前两种的混合索引 三者区别: ix / loc 可以通过行号和行标签进行索引...,比如 df.loc[‘a’] , df.loc[1], df.ix[‘a’] , df.ix[1] iloc只能通过行号索引 , df.iloc[0] 是对的, df.iloc[‘a’] 是错误的...建议: 当用行号索引的时候, 尽量用 iloc进行索引; 而用标签索引的时候用 loc , ix 尽量别用。

    67510

    Pandas 2.2 中文官方教程和指南(十一·二)

    带有一个参数(调用系列或数据)并返回索引的有效输出(上述之一)的 callable 函数。 一个包含整数的元组,其元素是上述输入之一。 更多信息请参见通过标签进行选择。...更多信息请参见通过位置进行选择、高级索引以及高级分层。 .loc、.iloc,以及[]索引可以接受callable作为索引器。更多信息请参见通过可调用对象进行选择。....loc、.iloc,以及[]索引可以接受一个callable作为索引器。....loc/[] 操作在为该轴设置不存在的键可以进行扩展。...如果您希望 pandas 在对链式索引表达式进行赋值更加信任或不信任,可以将选项 mode.chained_assignment 设置为以下值之一: 'warn',默认值,意味着将打印SettingWithCopyWarning

    23710

    pandas DataFrame 数据选取,修改,切片的实现

    pandas主要提供了三种属性用来选取行/列数据: 属性名 属性 ix 根据整数索引或者行标签选取数据 iloc 根据位置的整数索引选取数据 loc 根据行标签选取数据 先初始化一个DateFrame...1行即倒数第1行,这里有点烦躁,因为从前数从第0行开始,从后数就是-1行开始,毕竟没有-0) 2. loc,在知道列名字的情况下,df.loc[index,column] 选取指定行,列的数据 loc...除此之外,还可以进行组合切片 input example output 整数(行索引) df.iloc[5,1] 选取第6行,第2列的数据 整数数组 df.iloc[[1,3],[1,2]] 选取第...选取第1,2行;1,3列的数据 要注意的是,我们用df[参数]也可以进行切片,但这种方式容易引起chained indexing 问题。...所以在对数据进行切片的时候尽量使用iloc这类的方法 df.iloc[0,0] #第0行第0列的数据,'Snow' df.iloc[1,2] #第1行第2列的数据,32 df.iloc[[1,3],0

    8.7K20

    pandas技巧4

    to_excel(writer,sheet_name='单位') 和 writer.save(),将多个数据写入同一个工作簿的多个sheet(工作表) 查看、检查数据 df.head(n) # 查看DataFrame...df[[col1, col2]] # 以DataFrame形式返回多列 s.iloc[0] # 按位置选取数据 s.loc['index_one'] # 按索引选取数据 df.iloc[0,:] #...返回第一行 df.iloc[0,0] # 返回第一列的第一个元素 df.loc[0,:] # 返回第一行(索引为默认的数字,用法同df.iloc),但需要注意的是loc是按索引,iloc参数只接受数字参数...df.ix[[:5],["col1","col2"]] # 返回字段为col1和col2的前5条数据可以理解为lociloc的结合体。...,如果df1和df2有共同字段,会报错,可通过设置lsuffix,rsuffix来进行解决,如果需要按照共同列进行合并,就要用到set_index(col1) pd.merge(df1,df2,on=

    3.4K20

    Python pandas十分钟教程

    也就是说,500意味着在调用数据最多可以显示500列。 默认值仅为50。此外,如果想要扩展输显示的行数。...可以通过如下代码进行设置: pd.set_option('display.max_rows', 500) 读取数据集 导入数据是开始的第一步,使用pandas可以很方便的读取excel数据或者csv数据...要选择多个列,可以使用df[['Group', 'Contour', 'Depth']]。 子集选择/索引:如果要选择特定的子集,我们可以使用.loc或.iloc方法。...df.loc[0:4,['Contour']]:选择“Contour”列的0到4行。 df.iloc[:,2]:选择第二列的所有数据。 df.iloc[3,:]:选择第三行的所有数据。...按列连接数据 pd.concat([df, df2], axis=1) 按行连接数据 pd.concat([df, df2], axis=0) 当您的数据之间有公共列,合并适用于组合数据

    9.8K50

    Python科学计算之Pandas

    如果你想要多个索引,你可以简单地在列表中增加另一个列名。 ? 在上面这个例子中,我们把我们的索引值全部设置为了字符串。这意味着我们不可以使用iloc索引这些列了。这种情况该如何?我们使用loc。...这里,lociloc一样会返回你所索引的行数据的一个series。唯一的不同是此时你使用的是字符串标签进行引用,不是数字标签。 ix是另一个常用的引用一行的方法。...正如lociloc,上述代码将返回一个series包含你所索引的行的数据。 既然ix可以完成lociloc二者的工作为什么还需要它们呢?最主要的原因是ix有一些轻微的不可预测性。...还记得我说数字标签索引是ix的备选吗?数字标签可能会让ix做出一些奇怪的事情,例如将一个数字解释成一个位置。lociloc则为你带来了安全的、可预测的、内心的宁静。...然而必须指出的是,ix要比lociloc更快。 通常我们都希望索引是整齐有序地。我们可以在Pandas中通过调用sort_index来对dataframe实现排序。 ?

    2.9K00

    Python数据分析之pandas数据选取

    (行和列)对数据进行筛选,可以通过df.loc[],df.iloc[],df.ix[]三种方法实现。...df.loc[],df.iloc[],df.ix[]的区别如下: df.loc[]只能使用标签索引不能使用整数索引,通过便签索引切边进行筛选,前闭后闭。...df.iloc[]只能使用整数索引不能使用标签索引,通过整数索引切边进行筛选,前闭后开。; df.ix[]既可以使用标签索引,也可以使用整数索引。 下面分别通过实例演示这三种方法。...,也可以通过标签索引进行数据选取,换句话说,df.ix[]是df.loc[]和df.iloc[]的功能集合,且在同义词选取中,可以同时使用整数索引和标签索引。...2)进行区域选取,如果只能用标签索引,则使用df.loc[]或df.ix[],如果只能用整数索引,则用df.iloc[]或df.ix[]。

    1.6K30

    pandas | 如何在DataFrame中通过索引高效获取数据

    loc 首先我们来介绍locloc方法可以根据传入的行索引查找对应的行数据。注意,这里说的是行索引不是行号,它们之间是有区分的。...也就是知道一个索引知道一个位置,不是两个位置或者是两个索引,所以使用loc也不方便使用iloc也不方便。这个时候可以取巧,我们可以通过iloc找出对应的行之后,再通过列索引的方式去查询列。 ?...这里我们在iloc之后又加了一个方括号,这其实不是固定的用法,而是两个语句。先是iloc查询行之后,再对这些行组成的新的DataFrame进行索引。...但如果是通过索引来查找对应的若干行的话,其实也可以不用使用iloc,我们可以直接在df后面加上方括号来查询,一样可以得到结果。 ? 但是这种方式有一个限制,就是后面只能传入一个切片,不能是一个整数。...因为pandas会混淆不知道我们究竟是想要查询一列还是一行,所以这个时候只能通过iloc或者是loc进行。 逻辑表达式 和numpy一样,DataFrame也支持传入一个逻辑表达式作为查询条件。

    13.1K10
    领券