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

如何基于DataFrame唯一行值简便修改指定列值?(Pandas)

更简洁的Pandas修改指定行列值的方法

已知DataFrame的A列存在唯一值“bb”,需要修改该行对应C列的值,你当前的写法确实可以简化,以下是几种更直接的实现方式:

原代码回顾

import pandas as pd

df = pd.DataFrame({"A":['aa', 'bb', 'cc'],
                   "B":[1, 1, 1],
                   "C":[1, 88, 1],
                   "D":[1, 1, 1]})

print(df, '\n')

df.at[int(df.loc[df['A']=='bb', 'C'].index.values), 'C'] = 1

print(df)

方法一:直接使用loc布尔索引(最推荐)

这是最简洁且直观的写法,完全匹配你想要的“条件+列名”定位逻辑:

df.loc[df['A'] == 'bb', 'C'] = 1

因为A列的“bb”是唯一值,这个布尔条件只会定位到一行,直接赋值即可,无需额外转换索引。

方法二:利用at结合索引(适合需频繁按A列取值的场景)

如果后续需要多次基于A列的唯一值操作,可以先将A列设为索引,再用at快速定位:

# 临时将A列设为索引
df.set_index('A', inplace=True)
# 直接通过索引值和列名定位赋值
df.at['bb', 'C'] = 1
# 恢复原索引(可选)
df.reset_index(inplace=True)

这两种方法都比你当前的写法更简洁高效,其中第一种是日常场景下的最优选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 13:08:14