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

如何用loc/iloc修改pandas DataFrame特定列值及避开指定列操作

Pandas数据误改修复与防误操作方案

一、恢复交易号列的错误值

最优方案(100%还原原始值)

直接从原始CSV文件中读取交易号列,覆盖当前错误的列即可,不需要处理映射逻辑:

# 仅读取原始文件的交易号列,节省内存
original_trade_no = pd.read_csv("BreadBasket_DMS_pivot.csv", usecols=['交易号'])
df_bdPivot.loc[:, '交易号'] = original_trade_no['交易号']

手动修改方案

如果无法读取原始文件,且原交易号为按行顺序从1递增的连续整数,可直接重置:

df_bdPivot.loc[:, '交易号'] = range(1, len(df_bdPivot) + 1)

二、全表替换时跳过指定列的方案

你可以在执行替换前,通过列筛选排除不需要修改的列,仅对剩余列执行替换操作,优化后的完整代码如下:

import pandas as pd
df_bdPivot = pd.read_csv("BreadBasket_DMS_pivot.csv")
df_bdPivot.fillna(False, inplace=True)

# 筛选排除交易号列的所有列
modify_cols = df_bdPivot.columns[df_bdPivot.columns != '交易号']
# 仅对目标列执行替换,同时合并多次replace为单次调用
df_bdPivot.loc[:, modify_cols] = df_bdPivot.loc[:, modify_cols].replace(
    {1:True, 2:True, 3:True, 4:True}, 
    regex=True
)

如果需要跳过多个列,修改列筛选逻辑即可,示例:

# 跳过交易号、日期两列
skip_cols = ['交易号', '日期']
modify_cols = [col for col in df_bdPivot.columns if col not in skip_cols]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:36:06