一文详解DataFrame中df[]、df.iloc[]、df.loc[]、df.ix[]、df.iat[]、df.at[]的区别

一文详解DataFrame中df[]、df.iloc[]、df.loc[]、df.ix[]、df.iat[]、df.at[]的区别
最新回答
思乔香沁雪

2022-03-12 04:27:26

一文详解DataFrame中df[]、df.iloc[]、df.loc[]、df.ix[]、df.iat[]、df.at[]的区别

在Pandas库中,DataFrame是一种非常重要的数据结构,用于存储和操作结构化数据。为了高效地访问和修改DataFrame中的数据,Pandas提供了多种索引方法。本文将详细介绍df[]、df.iloc[]、df.loc[]、df.ix[]、df.iat[]、df.at[]这几种索引方式的区别和用法。

一、df[]

df[]是Pandas中最基本的索引方式,它可以在单一维度(行或列)上进行数据的选取。但需要注意的是,df[]不能同时筛选行和列数据。

  • 行操作:可以通过整数索引切片或标签索引切片来选取行。例如,df[0:3]选取前三行(整数索引切片,前闭后开),df['a':'c']选取a到c三行(标签索引切片,前闭后闭,但这种方式在Pandas新版本中可能已被弃用或警告,建议使用df.loc[]进行标签索引)。
  • 列操作:可以通过列名来选取列。例如,df[['姓名', '年龄']]选取姓名和年龄两列。
  • 按条件取值:可以通过布尔数组按条件筛选数据。例如,df[df['年龄'] > 20]选取年龄大于20岁的行。

然而,由于df[]的局限性(不能同时筛选行和列,且在新版本中可能面临弃用风险),建议使用更明确的索引方式如df.iloc[]和df.loc[]。

二、df.iloc[]

df.iloc[]通过行数和列数的整数索引来选取数据。

  • 行操作:例如,df.iloc[1:3, :]选取第1到2行(前闭后开),全部列。
  • 列操作:例如,df.iloc[:, 0:2]选取第0到1列(前闭后开),全部行。
  • 行、列同时操作:例如,df.iloc[[0, 2], [0, 2]]选取第0和2行,第0和2列的数据。

需要注意的是,df.iloc[]只能使用整数索引,不能使用标签索引。

三、df.loc[]

df.loc[]通过行标签和列名的标签索引来选取数据。

  • 行操作:例如,df.loc['a':'c', :]选取a到c行(前闭后闭),全部列。
  • 列操作:例如,df.loc[:, '姓名':'年龄']选取姓名到年龄列(前闭后闭),全部行。
  • 行、列同时操作:例如,df.loc[['a', 'c'], ['姓名', '年龄']]选取a和c行,姓名和年龄列的数据。
  • 按条件取值:与df[]类似,可以通过布尔数组按条件筛选数据。例如,df.loc[df['年龄'] > 20]选取年龄孙毕轮大于20岁的行。

df.loc[]是处理标签索引的首选方法,它提供了更直观和灵活的索引方式。

四、df.ix[](已弃用)

df.ix[]是df.loc[]和df.iloc[]的一个混合方法,它既可以使用标签索引,也可以使用整数索引。然而,由于这种混合方式容易导致混淆和错误,Pandas在新版本中已弃用df.ix[]。因此,建议避免使用df.ix[],而是根据需要使用df.loc[]或df.iloc[]。

五、df.iat[]

df.iat[]用于获取DataFrame中某个单元格的数据,它必须输入两个参数:行数和列数的整数戚数索引。虽然df.iat[]可以实现与df.iloc[]类似的功能(获取单个单元格数据),但由于其使用场景较为则信有限且容易与df.iloc[]混淆,因此建议优先使用df.iloc[]进行单个单元格数据的获取。

六、df.at[]

df.at[]也用于获取DataFrame中某个单元格的数据,但它必须输入两个参数:行标签和列名。与df.iat[]类似,df.at[]可以实现与df.loc[]类似的功能(获取单个单元格数据),但由于其使用场景较为有限且容易与df.loc[]混淆,因此建议优先使用df.loc[]进行单个单元格数据的获取。

总结

  • df[]:基本索引方式,但功能有限且可能面临弃用风险,建议使用df.iloc[]和df.loc[]替代。
  • df.iloc[]:通过整数索引选取数据,适用于需要按位置索引的场景。
  • df.loc[]:通过标签索引选取数据,适用于需要按标签索引的场景。
  • df.ix[]:已弃用的混合索引方式,避免使用。
  • df.iat[]和df.at[]:用于获取单个单元格数据,但功能有限且容易与其他索引方式混淆,建议优先使用df.iloc[]和df.loc[]。

在实际应用中,建议主要掌握df.iloc[]和df.loc[]的用法,它们分别适用于按位置和按标签索引的场景,能够满足大多数数据处理需求。其他索引方式可以作为补充了解,但在实际编码中应尽量避免使用以避免混淆和错误。