Data Science

高效修改Pandas DataFrame单元格索引

Spread the love

Pandas DataFrame是Python数据操作的基石。你经常需要修改DataFrame中的单个单元格。本文探讨了使用DataFrame索引实现此目的的三种高效方法。

目录

  1. 使用.at设置单元格值
  2. 使用.loc设置单元格值
  3. 已弃用的.set_value()方法

使用.at设置单元格值

.at访问器提供了一种高效的方式,可以使用其行和列标签访问和修改DataFrame中的单个单元格。其速度使其成为单值赋值的理想选择。


import pandas as pd

# 示例DataFrame
data = {'col1': [1, 2, 3], 'col2': [4, 5, 6]}
df = pd.DataFrame(data, index=['A', 'B', 'C'])

# 将'B'行'col1'列单元格的值设置为10
df.at['B', 'col1'] = 10

print(df)

这将输出:


   col1  col2
A     1     4
B    10     5
C     3     6

当处理单个单元格时,.at针对速度和简单性进行了优化。但是,尝试赋值多个值将导致TypeError

使用.loc设置单元格值

.loc访问器提供了更大的灵活性。它允许基于标签的行和列索引,并且可以同时处理对单个值或数组到多个单元格的赋值。


import pandas as pd

# 示例DataFrame
data = {'col1': [1, 2, 3], 'col2': [4, 5, 6]}
df = pd.DataFrame(data, index=['A', 'B', 'C'])

# 将'A'行'col2'列单元格的值设置为100
df.loc['A', 'col2'] = 100

print(df)

# 设置多个值
df.loc[['A', 'B'], 'col1'] = [5, 15]  # 将5赋值给A,15赋值给B
print(df)

这将首先输出:


   col1  col2
A     1   100
B     2     5
C     3     6

然后:


   col1  col2
A     5   100
B    15     5
C     3     6

.loc是最通用的方法,适用于单单元格更新和涉及多行多列的更复杂场景。虽然用途广泛,但对于单单元格更改,.at通常更快。

已弃用的.set_value()方法

在较新的Pandas版本中,.set_value()方法已被弃用。虽然它可能仍然在较旧的版本中运行,但强烈建议使用.at.loc以获得更好的兼容性和性能。避免在新代码中使用.set_value()

总而言之,.at.loc都提供了修改Pandas DataFrame中单个单元格的有效方法。对于单个值,建议使用.at,因为它速度快且简单;对于处理多个单元格或更复杂的修改,则建议使用.loc

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注