qq.loc[qq[(qq.period_week>=0108) | (qq.member_no.isin(pc.member_no))].index,'code'] = 4566
qq.loc[(qq.period_week>=0108) | (qq.member_no.isin(pc.member_no)),'code'] = 4566
这2者看似计算逻辑一样,但其实有区别的,比如:
member_no period_week
1 ZA28210818777 0108
1 UM51210819108 0100
#下面只有第一行符合条件,用第二种写法就只会选中第一行来改变
member_no period_week code
1 ZA28210818777 0108 4566
1 UM51210819108 0100 NaN
但第一种写法是选中第一行的index,由于第二行的index也是1,所以就把2行都选中并改变code==4566,这显然非我本意。
member_no period_week code
1 ZA28210818777 0108 4566
1 UM51210819108 0100 4566
所以第一种写法必须建立在df.index 不重复的基础上,否则它就会把不符合筛选条件但index重复的数组也选中了!!
建议用第二种写法,稳妥一点。
qq.loc[(qq.period_week>=0108) | (qq.member_no.isin(pc.member_no)),'code'] = 4566