如何优雅地对Pandas DataFrame中float64类型元素统一除以100?
优雅实现Pandas DataFrame中float64列全局除以100
刚好遇到过类似需求,这里有两种简洁高效的实现方式,完全不用手动指定目标列,自动识别所有float64类型列完成除法:
方法一:一行代码快速实现(适合小数据集)
利用apply遍历每一列,判断类型后执行运算,代码简洁直观:
import pandas as pd # 假设你的DataFrame名为df df = df.apply(lambda col: col / 100 if col.dtype == 'float64' else col)
方法二:高效向量运算(推荐大数据集)
先通过select_dtypes精准筛选出所有float64列,再直接对这些列做向量运算——Pandas的向量运算比逐列apply效率高得多,处理大表时优势明显:
# 筛选所有float64类型的列 float_columns = df.select_dtypes(include=['float64']).columns # 对目标列执行除法 df[float_columns] = df[float_columns] / 100
实际测试示例
我们用一个混合类型的DataFrame验证效果:
# 创建测试数据 test_data = { 'float_col1': [200.0, 400.0, 600.0], 'int_col': [1, 2, 3], 'str_col': ['apple', 'banana', 'cherry'], 'float_col2': [150.5, 320.8, 570.3] } df = pd.DataFrame(test_data) # 使用方法二处理 float_cols = df.select_dtypes(include=['float64']).columns df[float_cols] = df[float_cols] / 100 print(df)
输出结果:
float_col1 int_col str_col float_col2 0 2.0 1 apple 1.505 1 4.0 2 banana 3.208 2 6.0 3 cherry 5.703
可以看到只有float_col1和float_col2这两个float64列被除以100,其他类型的列完全不受影响,完美匹配需求。
内容的提问来源于stack exchange,提问作者airzed
相关产品推荐
相关产品推荐

