pandas dataframe loc和iloc

pandas dataframe loc和iloc

参考:pandas dataframe loc and iloc

在数据分析中,我们经常需要对数据进行各种操作,如选择、修改、删除等。在Python的pandas库中,提供了两种主要的数据结构:Series和DataFrame。其中,DataFrame是一种二维的数据结构,非常适合于处理表格数据。而在处理DataFrame时,我们经常需要对其进行索引,即选择特定的行和列。pandas提供了两种主要的索引方式:loc和iloc。本文将详细介绍这两种索引方式的使用方法。

1. loc索引器

loc是基于标签的数据选择方法,它意味着我们需要传入的是数据的标签名,而不是位置。它可以接受的类型有:

  • 单个标签。例如:2或’a’,这里的2指的是标签而不是索引位置。
  • 列表或数组包含的标签。例如:[‘a’, ‘b’, ‘c’]。
  • 切片对象。例如:’a’:’f’,注意这里和普通的Python切片不同,包含末端。
  • 布尔数组。
  • 可返回标签的函数或参数。

下面我们通过一些示例来详细介绍loc的使用方法。

import pandas as pd

# 创建一个DataFrame
df = pd.DataFrame({
    'A': range(1, 6),
    'B': range(6, 11),
    'C': range(11, 16)
}, index=list('abcde'))

# 使用单个标签选择数据
print(df.loc['a'])

Output:

pandas dataframe loc和iloc

import pandas as pd

# 创建一个DataFrame
df = pd.DataFrame({
    'A': range(1, 6),
    'B': range(6, 11),
    'C': range(11, 16)
}, index=list('abcde'))

# 使用标签列表选择数据
print(df.loc[['a', 'c']])

Output:

pandas dataframe loc和iloc

import pandas as pd

# 创建一个DataFrame
df = pd.DataFrame({
    'A': range(1, 6),
    'B': range(6, 11),
    'C': range(11, 16)
}, index=list('abcde'))

# 使用切片对象选择数据
print(df.loc['a':'c'])

Output:

pandas dataframe loc和iloc

import pandas as pd

# 创建一个DataFrame
df = pd.DataFrame({
    'A': range(1, 6),
    'B': range(6, 11),
    'C': range(11, 16)
}, index=list('abcde'))

# 使用布尔数组选择数据
print(df.loc[df['A'] > 2])

Output:

pandas dataframe loc和iloc

import pandas as pd

# 创建一个DataFrame
df = pd.DataFrame({
    'A': range(1, 6),
    'B': range(6, 11),
    'C': range(11, 16)
}, index=list('abcde'))

# 使用可返回标签的函数或参数选择数据
print(df.loc[df['A'].apply(lambda x: x > 2)])

Output:

pandas dataframe loc和iloc

2. iloc索引器

与loc不同,iloc是基于位置的索引方式,它接受的参数只能是整数或整数列表,不能是标签。它可以接受的类型有:

  • 单个整数。例如:5。
  • 整数列表或数组。例如:[4, 3, 0]。
  • 整数切片对象。例如:1:7。
  • 布尔数组。
  • 可返回位置的函数或参数。

下面我们通过一些示例来详细介绍iloc的使用方法。

import pandas as pd

# 创建一个DataFrame
df = pd.DataFrame({
    'A': range(1, 6),
    'B': range(6, 11),
    'C': range(11, 16)
}, index=list('abcde'))

# 使用单个整数选择数据
print(df.iloc[0])

Output:

pandas dataframe loc和iloc

import pandas as pd

# 创建一个DataFrame
df = pd.DataFrame({
    'A': range(1, 6),
    'B': range(6, 11),
    'C': range(11, 16)
}, index=list('abcde'))

# 使用整数列表选择数据
print(df.iloc[[0, 2]])

Output:

pandas dataframe loc和iloc

import pandas as pd

# 创建一个DataFrame
df = pd.DataFrame({
    'A': range(1, 6),
    'B': range(6, 11),
    'C': range(11, 16)
}, index=list('abcde'))

# 使用整数切片对象选择数据
print(df.iloc[0:2])

Output:

pandas dataframe loc和iloc

import pandas as pd

# 创建一个DataFrame
df = pd.DataFrame({
    'A': range(1, 6),
    'B': range(6, 11),
    'C': range(11, 16)
}, index=list('abcde'))

# 使用布尔数组选择数据
print(df.iloc[df['A'].values > 2])

Output:

pandas dataframe loc和iloc

import pandas as pd

# 创建一个DataFrame
df = pd.DataFrame({
    'A': range(1, 6),
    'B': range(6, 11),
    'C': range(11, 16)
}, index=list('abcde'))

# 使用可返回位置的函数或参数选择数据
print(df.iloc[df['A'].apply(lambda x: x > 2)])

3. loc和iloc的区别

从上面的介绍可以看出,loc和iloc的主要区别在于接受的参数类型,loc接受的是标签,而iloc接受的是整数位置。因此,当我们的标签不是整数,或者标签和位置不一致时,loc和iloc的结果可能会不同。

此外,还需要注意的是,loc包含切片的末端,而iloc不包含。这一点和Python的普通切片是一致的。

下面我们通过一些示例来展示loc和iloc的区别。

import pandas as pd

# 创建一个DataFrame,标签和位置不一致
df = pd.DataFrame({
    'A': range(1, 6),
    'B': range(6, 11),
    'C': range(11, 16)
}, index=[1, 3, 5, 7, 9])

# 使用loc和iloc选择相同的位置
print(df.loc[1])
print(df.iloc[1])

Output:

pandas dataframe loc和iloc

import pandas as pd

# 创建一个DataFrame,标签和位置不一致
df = pd.DataFrame({
    'A': range(1, 6),
    'B': range(6, 11),
    'C': range(11, 16)
}, index=[1, 3, 5, 7, 9])

# 使用loc和iloc选择相同的切片
print(df.loc[1:3])
print(df.iloc[1:3])

Output:

pandas dataframe loc和iloc

4. 总结

总的来说,loc和iloc是pandas中非常重要的两种索引方式,它们分别基于标签和位置进行数据选择。在实际使用中,我们需要根据实际情况选择合适的索引方式。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程