You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于df2对应列小数位数批量对df1各列取整?

批量按对应列小数位数取整DataFrame

问题描述

现有两个列名一一对应的DataFrame:df1和df2,需要将df1的每一列按照df2对应列的小数位数进行取整。目前逐列手动调用round方法效率低下(两表均含40+列),需要批量处理方案。

示例数据

df1:

LiBeScVCrMn
20.1564-0.0011-0.19210.03430.57290.1121
19.2871-0.00270.00760.0660.51960.0981
0.86930.00160.19970.03170.05330.014

df2:

LiBeScVCrMn
2.00.0500.30.1110.500.40

期望输出:

LiBeScVCrMn
20.2-0.001-0.20.0340.570.11
19.3-0.00300.0660.520.1
0.90.0020.20.0320.050.01

解决方案

步骤1:提取各列需保留的小数位数

从df2的唯一行中,计算每个值对应的小数位数:

# 提取df2第一行数据,计算每列的小数位数
decimal_places = df2.iloc[0].apply(lambda x: len(str(x).split('.')[1]))

运行后decimal_places结果为:

Li    1
Be    3
Sc    1
V     3
Cr    2
Mn    2
dtype: int64

步骤2:批量对df1执行取整操作

直接调用pandas.DataFrame.round()方法,传入上述小数位数的Series即可完成批量处理:

df_rounded = df1.round(decimal_places)

验证结果

运行上述代码后,df_rounded将完全匹配期望输出。

补充说明

  • 若df2存在多行数据,可根据实际需求先聚合(如取第一行、均值对应的小数位数等)后再执行上述步骤;
  • 该方法利用pandas的向量化操作,比逐列循环效率高得多,适合处理大量列的场景。

内容的提问来源于stack exchange,提问作者Gingerhaze

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 20:02:23