基于前后行去重DataFrame值:替换特定重复项为None
DataFrame按条件批量替换行值解决方案
初始数据定义
import pandas as pd d = {"a":["Residency", "Citizenship", "Citizenship","Residency", "Citizenship","Citizenship","Citizenship","Residency"], "b":["UK","UK","UK","UK","UK","UK","UK","UK"]} df = pd.DataFrame(d)
初始数据预览
a b 0 Residency UK 1 Citizenship UK 2 Citizenship UK 3 Residency UK 4 Citizenship UK 5 Citizenship UK 6 Citizenship UK 7 Residency UK
需求说明
当a列的前一行值不为Residency时,将当前行的Citizenship和UK替换为None,需保留DataFrame中其他所有列的原有数据不变。
实现代码
# 构建筛选条件:前一行a列不是Residency,且当前行a列是Citizenship mask = (df['a'].shift() != 'Residency') & (df['a'] == 'Citizenship') # 对符合条件的行,将a、b列赋值为None df.loc[mask, ['a', 'b']] = None
最终结果
a b 0 Residency UK 1 Citizenship UK 2 None None 3 Residency UK 4 Citizenship UK 5 None None 6 None None 7 Residency UK
内容的提问来源于stack exchange,提问作者nzskra
相关产品推荐
相关产品推荐

