Pandas中仅对数值列执行标量算术运算的高效实现方法
解决方案
方法1:pandas 1.3.0+ 最简写法
直接调用mul方法时开启numeric_only参数,自动跳过非数值列完成计算:
df = df.mul(100, numeric_only=True)
这种写法完全符合你预期的调用形式,内部会自动筛选所有数值类型的列执行乘法,字符串等非数值列会原封不动保留,不需要额外手动指定列名。
方法2:兼容低版本pandas的写法
如果你的pandas版本低于1.3.0没有numeric_only参数,可以先通过select_dtypes筛选数值列再做运算:
df[df.select_dtypes(include='number').columns] *= 100
这种写法同样是单句完成操作,性能和第一种写法一致,支持任意多列的自动适配。
内容的提问来源于stack exchange,提问作者Julkar9
相关产品推荐
相关产品推荐

