You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas DataFrame中.loc与.at更新单个值的差异是什么?

pandas中df.loc与df.at更新单个元素的差异

问题背景

首先通过以下代码生成示例DataFrame:

import pandas as pd

person = {
    "first":["Arun", "Hari", "Radha"],
    "second":["Kumar", "Chauhan", "Singh"],
    "email":["arun@gmail.com", "Hari@1234", "radha@gmail"]
}
df = pd.DataFrame(person)

使用以下两种方式更新单个元素后,得到的结果完全一致:

# 方式1:使用loc
df.loc[2, 'second'] = 'kapoor'
# 方式2:使用at
df.at[2, 'second'] = 'kapoor'

更新后的DataFrame:

first   second  email
0   Arun    Kumar   arun@gmail.com
1   Hari    Chauhan Hari@1234
2   Radha   kapoor  radha@gmail

两者的核心差异如下:

  • 定位灵活性不同
    df.loc[]是通用的基于标签的索引器,支持复杂的定位操作:比如多行切片df.loc[0:1]、多列选择df.loc[:, ['first', 'email']]、布尔索引df.loc[df['first'] == 'Arun']等;而df.at[]是专门为单个标量元素设计的,只能接收单个行标签+单个列标签的组合,无法完成批量或复杂定位。

  • 性能表现有区别
    针对单个元素的读写操作,df.at[]的性能比df.loc[]更优。因为loc需要处理各种通用索引的逻辑,而at直接跳过这些额外处理,精准定位到目标元素,在高频单个元素操作的场景下,这种性能差距会更显著。

  • 返回值与适用场景不同
    使用df.loc[]获取数据时,根据选中范围的不同,可能返回DataFrame、Series或标量;而df.at[]始终返回单个标量值。因此loc适合批量数据的读写、复杂条件下的数据操作,at则适合精准的单个元素快速读写。

内容的提问来源于stack exchange,提问作者user16982433

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 19:06:27