如何为Pandas DataFrame指定列批量应用numpy.round()函数?
Pandas批量对指定列应用numpy.round()的简便方法
假设你有如下Pandas DataFrame:
import pandas as pd import numpy as np dat = pd.DataFrame({'X1': ['aa'], 'X2': [2.3], 'X3': [23.56]})
如果需要批量对指定列应用numpy.round(),不用逐列手动操作,有以下几种高效方法:
1. 直接对列子集应用numpy.round()
先定义需要处理的目标列列表,然后直接用numpy.round()作用于选中的列子集,这是最简洁高效的方式:
# 定义目标列 target_cols = ['X2', 'X3'] # 批量应用round函数,保留2位小数 dat[target_cols] = np.round(dat[target_cols], 2)
numpy的向量化操作可以直接处理Pandas的列子集,性能优异,适合处理数百列的场景。
2. 使用DataFrame.apply()方法
也可以用apply()方法批量处理目标列,两种写法都可行:
target_cols = ['X2', 'X3'] # 写法1:lambda表达式 dat[target_cols] = dat[target_cols].apply(lambda col: np.round(col, 2)) # 写法2:指定args参数传递小数位数 dat[target_cols] = dat[target_cols].apply(np.round, args=(2,))
3. 按列名模式自动筛选目标列
如果目标列的名称有规律(比如都以X开头后接数字),可以用filter()自动筛选列,不用手动列出来:
# 筛选列名匹配"X+数字"模式的列 target_cols = dat.filter(regex='^X\d+$').columns dat[target_cols] = np.round(dat[target_cols], 2)
内容的提问来源于stack exchange,提问作者Brian19931
相关产品推荐
相关产品推荐

