如何检测Pandas DataFrame列值更新/删除并标记变更行?
实现带变更标记列的Pandas DataFrame修改
首先初始化目标DataFrame:
import pandas as pd _d = {'first_name':['Joe','Sha','Ram','Wes','David'], 'last_name':['Doe','Jhu','Krishna','County','John'], 'middle_name':['R.','M.','Q.','S.','I.'] } df_A = pd.DataFrame(_d)
接下来按需求完成修改并标记变更行:
- 先新增
is_changed列,默认标记为未变更('No')
df_A['is_changed'] = 'No'
- 修改last_name为Doe的用户的middle_name,并标记该行已变更
# 定位目标行 mask = df_A['last_name'] == 'Doe' # 修改middle_name df_A.loc[mask, 'middle_name'] = 'RA.' # 标记变更 df_A.loc[mask, 'is_changed'] = 'Yes'
- 修改first_name为David的用户的last_name,并标记变更
mask = df_A['first_name'] == 'David' df_A.loc[mask, 'last_name'] = 'Curey' df_A.loc[mask, 'is_changed'] = 'Yes'
- 修改first_name为Ram的用户的first_name为Laxman,并标记变更
mask = df_A['first_name'] == 'Ram' df_A.loc[mask, 'first_name'] = 'Laxman' df_A.loc[mask, 'is_changed'] = 'Yes'
执行完所有操作后,打印DataFrame即可看到结果:
print(df_A)
输出结果:
first_name last_name middle_name is_changed 0 Joe Doe RA. Yes 1 Sha Jhu M. No 2 Laxman Krishna Q. Yes 3 Wes County S. No 4 David Curey I. Yes
这种方式的好处是每次修改时同步更新变更标记,确保所有被修改过的行都能被正确标记,后续有新的修改操作时,只需要重复「定位目标行→修改列→标记变更」的步骤即可。
内容的提问来源于stack exchange,提问作者myamulla_ciencia
相关产品推荐
相关产品推荐

