如何用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
相关产品推荐
相关产品推荐

