pandas dataframe的loc和iloc函数的使用方法

pandas dataframe的loc和iloc函数的使用方法

参考:pandas dataframe loc iloc

在数据分析中,我们经常需要对数据进行各种操作,如选择、修改、删除等。在pandas库中,我们可以使用loc和iloc函数来实现这些操作。本文将详细介绍pandas dataframe的loc和iloc函数的使用方法。

1. loc函数

loc函数是基于标签的数据选择方法,它可以接受的输入有:

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

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

示例1:单个标签选择

import pandas as pd

data = {'name': ['Tom', 'Nick', 'John', 'Tom', 'John'],
        'age': [20, 21, 19, 20, 18],
        'score': [90, 85, 88, 92, 90]}
df = pd.DataFrame(data, index=['a', 'b', 'c', 'd', 'e'])
print(df.loc['a'])

Output:

pandas dataframe的loc和iloc函数的使用方法

示例2:标签列表选择

import pandas as pd

data = {'name': ['Tom', 'Nick', 'John', 'Tom', 'John'],
        'age': [20, 21, 19, 20, 18],
        'score': [90, 85, 88, 92, 90]}
df = pd.DataFrame(data, index=['a', 'b', 'c', 'd', 'e'])
print(df.loc[['a', 'c', 'e']])

Output:

pandas dataframe的loc和iloc函数的使用方法

示例3:切片对象选择

import pandas as pd

data = {'name': ['Tom', 'Nick', 'John', 'Tom', 'John'],
        'age': [20, 21, 19, 20, 18],
        'score': [90, 85, 88, 92, 90]}
df = pd.DataFrame(data, index=['a', 'b', 'c', 'd', 'e'])
print(df.loc['a':'c'])

Output:

pandas dataframe的loc和iloc函数的使用方法

示例4:布尔数组选择

import pandas as pd

data = {'name': ['Tom', 'Nick', 'John', 'Tom', 'John'],
        'age': [20, 21, 19, 20, 18],
        'score': [90, 85, 88, 92, 90]}
df = pd.DataFrame(data, index=['a', 'b', 'c', 'd', 'e'])
print(df.loc[df['age'] > 19])

Output:

pandas dataframe的loc和iloc函数的使用方法

2. iloc函数

iloc函数是基于位置的数据选择方法,它可以接受的输入有:

  • 单个整数。例如:5。
  • 整数列表。例如:[4, 3, 0]。
  • 整数切片对象。例如:1:7。
  • 布尔数组。

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

示例5:单个整数选择

import pandas as pd

data = {'name': ['Tom', 'Nick', 'John', 'Tom', 'John'],
        'age': [20, 21, 19, 20, 18],
        'score': [90, 85, 88, 92, 90]}
df = pd.DataFrame(data)
print(df.iloc[3])

Output:

pandas dataframe的loc和iloc函数的使用方法

示例6:整数列表选择

import pandas as pd

data = {'name': ['Tom', 'Nick', 'John', 'Tom', 'John'],
        'age': [20, 21, 19, 20, 18],
        'score': [90, 85, 88, 92, 90]}
df = pd.DataFrame(data)
print(df.iloc[[0, 2, 4]])

Output:

pandas dataframe的loc和iloc函数的使用方法

示例7:整数切片对象选择

import pandas as pd

data = {'name': ['Tom', 'Nick', 'John', 'Tom', 'John'],
        'age': [20, 21, 19, 20, 18],
        'score': [90, 85, 88, 92, 90]}
df = pd.DataFrame(data)
print(df.iloc[1:3])

Output:

pandas dataframe的loc和iloc函数的使用方法

示例8:布尔数组选择

import pandas as pd

data = {'name': ['Tom', 'Nick', 'John', 'Tom', 'John'],
        'age': [20, 21, 19, 20, 18],
        'score': [90, 85, 88, 92, 90]}
df = pd.DataFrame(data)
print(df.iloc[df['age'].values > 19])

Output:

pandas dataframe的loc和iloc函数的使用方法

3. loc和iloc的区别

loc和iloc虽然都是用来选择数据的,但它们之间还是有一些区别的。

  • loc是基于标签的,而iloc是基于位置的。
  • loc包含末端,而iloc不包含末端。
  • loc可以接受布尔数组,但是iloc接受的布尔数组必须和dataframe长度相同。

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

示例9:loc和iloc的区别

import pandas as pd

data = {'name': ['Tom', 'Nick', 'John', 'Tom', 'John'],
        'age': [20, 21, 19, 20, 18],
        'score': [90, 85, 88, 92, 90]}
df = pd.DataFrame(data, index=['a', 'b', 'c', 'd', 'e'])

# loc基于标签
print(df.loc['a'])

# iloc基于位置
print(df.iloc[0])

# loc包含末端
print(df.loc['a':'c'])

# iloc不包含末端
print(df.iloc[0:2])

# loc可以接受布尔数组
print(df.loc[df['age'] > 19])

# iloc接受的布尔数组必须和dataframe长度相同
print(df.iloc[df['age'].values > 19])

Output:

pandas dataframe的loc和iloc函数的使用方法

4. loc和iloc的高级用法

除了基本的选择功能,loc和iloc还有一些高级的用法,如选择行和列,修改数据等。

示例10:选择行和列

import pandas as pd

data = {'name': ['Tom', 'Nick', 'John', 'Tom', 'John'],
        'age': [20, 21, 19, 20, 18],
        'score': [90, 85, 88, 92, 90]}
df = pd.DataFrame(data, index=['a', 'b', 'c', 'd', 'e'])

# 使用loc选择行和列
print(df.loc[['a', 'c', 'e'], ['name', 'score']])

# 使用iloc选择行和列
print(df.iloc[[0, 2, 4], [0, 2]])

Output:

pandas dataframe的loc和iloc函数的使用方法

示例11:修改数据

import pandas as pd

data = {'name': ['Tom', 'Nick', 'John', 'Tom', 'John'],
        'age': [20, 21, 19, 20, 18],
        'score': [90, 85, 88, 92, 90]}
df = pd.DataFrame(data, index=['a', 'b', 'c', 'd', 'e'])

# 使用loc修改数据
df.loc['a', 'age'] = 22
print(df)

# 使用iloc修改数据
df.iloc[0, 1] = 23
print(df)

Output:

pandas dataframe的loc和iloc函数的使用方法

示例12:删除数据

import pandas as pd

data = {'name': ['Tom', 'Nick', 'John', 'Tom', 'John'],
        'age': [20, 21, 19, 20, 18],
        'score': [90, 85, 88, 92, 90]}
df = pd.DataFrame(data, index=['a', 'b', 'c', 'd', 'e'])

# 使用loc删除数据
df = df.loc[df['name'] != 'Tom']
print(df)

# 使用iloc删除数据
df = df.iloc[df['age'].values != 20]
print(df)

Output:

pandas dataframe的loc和iloc函数的使用方法

示例13:使用loc函数进行条件筛选

import pandas as pd

data = {'name': ['Tom', 'Nick', 'John', 'Tom', 'John'],
        'age': [20, 21, 19, 20, 18],
        'score': [90, 85, 88, 92, 90]}
df = pd.DataFrame(data, index=['a', 'b', 'c', 'd', 'e'])

# 使用loc函数进行条件筛选
df = df.loc[(df['age'] > 19) & (df['score'] > 85)]
print(df)

Output:

pandas dataframe的loc和iloc函数的使用方法

示例14:使用iloc函数进行条件筛选

import pandas as pd

data = {'name': ['Tom', 'Nick', 'John', 'Tom', 'John'],
        'age': [20, 21, 19, 20, 18],
        'score': [90, 85, 88, 92, 90]}
df = pd.DataFrame(data)

# 使用iloc函数进行条件筛选
df = df.iloc[(df['age'].values > 19) & (df['score'].values > 85)]
print(df)

Output:

pandas dataframe的loc和iloc函数的使用方法

示例15:使用loc函数修改某列数据

import pandas as pd

data = {'name': ['Tom', 'Nick', 'John', 'Tom', 'John'],
        'age': [20, 21, 19, 20, 18],
        'score': [90, 85, 88, 92, 90]}
df = pd.DataFrame(data, index=['a', 'b', 'c', 'd', 'e'])

# 使用loc函数修改某列数据
df.loc[df['name'] == 'Tom', 'score'] = 100
print(df)

Output:

pandas dataframe的loc和iloc函数的使用方法

示例16:使用iloc函数修改某列数据

import pandas as pd

data = {'name': ['Tom', 'Nick', 'John', 'Tom', 'John'],
        'age': [20, 21, 19, 20, 18],
        'score': [90, 85, 88, 92, 90]}
df = pd.DataFrame(data)

# 使用iloc函数修改某列数据
df.iloc[df['name'].values == 'Tom', 2] = 100
print(df)

Output:

pandas dataframe的loc和iloc函数的使用方法

示例17:使用loc函数选择多行多列

import pandas as pd

data = {'name': ['Tom', 'Nick', 'John', 'Tom', 'John'],
        'age': [20, 21, 19, 20, 18],
        'score': [90, 85, 88, 92, 90]}
df = pd.DataFrame(data, index=['a', 'b', 'c', 'd', 'e'])

# 使用loc函数选择多行多列
print(df.loc[['a', 'c', 'e'], ['name', 'score']])

Output:

pandas dataframe的loc和iloc函数的使用方法

示例18:使用iloc函数选择多行多列

import pandas as pd

data = {'name': ['Tom', 'Nick', 'John', 'Tom', 'John'],
        'age': [20, 21, 19, 20, 18],
        'score': [90, 85, 88, 92, 90]}
df = pd.DataFrame(data)

# 使用iloc函数选择多行多列
print(df.iloc[[0, 2, 4], [0, 2]])

Output:

pandas dataframe的loc和iloc函数的使用方法

示例19:使用loc函数选择一行多列

import pandas as pd

data = {'name': ['Tom', 'Nick', 'John', 'Tom', 'John'],
        'age': [20, 21, 19, 20, 18],
        'score': [90, 85, 88, 92, 90]}
df = pd.DataFrame(data, index=['a', 'b', 'c', 'd', 'e'])

# 使用loc函数选择一行多列
print(df.loc['a', ['name', 'score']])

Output:

pandas dataframe的loc和iloc函数的使用方法

示例20:使用iloc函数选择一行多列

import pandas as pd

data = {'name': ['Tom', 'Nick', 'John', 'Tom', 'John'],
        'age': [20, 21, 19, 20, 18],
        'score': [90, 85, 88, 92, 90]}
df = pd.DataFrame(data)

# 使用iloc函数选择一行多列
print(df.iloc[0, [0, 2]])

Output:

pandas dataframe的loc和iloc函数的使用方法

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程