如何通过loc为满足H='R'的多行批量设置G、I列值为'U'?
批量修改DataFrame多列值的Pythonic写法
问题背景
现有如下DataFrame:
A B C D E F G H I J K 0 . . . . . . X L . . . 1 . . . . . . X A . . . ... 300 . . . . . . X R . . . 301 . . . . . . nan R . . . 302 . . . . . . X R . . . 303 . . . . . . nan R . . .
需求:当H列值等于'R'时,将G列和I列的值设置为'U',期望输出如下:
A B C D E F G H I J K 0 . . . . . . X L . . . 1 . . . . . . X A . . . ... 300 . . . . . . U R U . . 301 . . . . . . U R U . . 302 . . . . . . U R U . . 303 . . . . . . U R U . .
目前通过两次调用loc实现:
df.loc[df['H'] == 'R', 'G'] = 'U' df.loc[df['H'] == 'R', 'I'] = 'U'
希望用更Pythonic的方式,通过一次loc调用批量处理多列。
解决方案
完全可以实现,只需把要修改的列名放在列表中作为loc的第二个参数即可:
df.loc[df['H'] == 'R', ['G', 'I']] = 'U'
这行代码会一次性对所有满足H == 'R'的行,将G和I列的值统一设置为'U',写法简洁且符合Python的风格。
内容的提问来源于stack exchange,提问作者Domarius
相关产品推荐
相关产品推荐

