我的 boosting_df Pandas DataFrame 如下:
sku boost1 boost2 boost3 boost4
0 a ffffdfg a fggg replace
1 b fff fff fff replace
2 c ddf b ddf replace
3 d dfgd dfgd d replace
对于每一行,如果“sku”的值与boost1或boost2或boost3的值相同,则希望将匹配值替换为boost4内部的值。
例如:
sku boost1 boost2 boost3
0 a ffffdfg replace fggg
1 b fff fff fff
2 c ddf b ddf
3 d dfgd dfgd replace
我尝试了:
boosting_df.loc[boosting_df['boost1'] == boosting_df['sku'], 'boost1'] = boosting_df['boost4']
boosting_df.loc[boosting_df['boost2'] == boosting_df['sku'], 'boost2'] = boosting_df['boost4']
boosting_df.loc[boosting_df['boost2'] == boosting_df['sku'], 'boost3'] = boosting_df['boost4']
但是我遇到了以下错误:
ValueError: shape mismatch: value array of shape (4,) could not be broadcast to indexing result of shape (0,)
.loc
也应该完全可以,这不会产生与ix
相同的输出吗? - joris.loc
完全没问题。谢谢指出 :) - YS-L