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

Python Pandas:如何根据参考列小数位数对目标列进行取整?

问题:根据bid_1/ask_1的小数位数格式化bid_2/ask_2列

我想用Python Pandas实现:根据bid_1和ask_1列的小数位数,分别对bid_2和ask_2列的数值取整——比如bid_1小数点后有4位,bid_2也保留4位小数,以此类推。

原始DataFrame

symbol   bid_1        ask_1     bid_2     ask_2
1222   1INCHUSDT    0.7135     0.714      0.71300000      0.71400000
1092    AAVEUSDT     87.35      87.4     87.40000000     87.50000000
1875     ACHUSDT   0.01405   0.01407      0.01407000      0.01409000

预期结果

symbol      bid_1     ask_1          bid_2           ask_2
1222   1INCHUSDT    0.7135     0.714         0.7130            0.714
1092    AAVEUSDT     87.35      87.4         87.40             87.5
1875     ACHUSDT   0.01405   0.01407         0.01407           0.01409

尝试过的无效代码

df['digit'] = (df['bid_1'].find('.'))
df['bid_2']  = float(round(float(bid_2), df['digit']))

解决方案

代码实现

import pandas as pd

# 构建示例DataFrame(已有数据可跳过此步)
data = {
    'symbol': ['1INCHUSDT', 'AAVEUSDT', 'ACHUSDT'],
    'bid_1': ['0.7135', '87.35', '0.01405'],
    'ask_1': ['0.714', '87.4', '0.01407'],
    'bid_2': [0.71300000, 87.40000000, 0.01407000],
    'ask_2': [0.71400000, 87.50000000, 0.01409000]
}
df = pd.DataFrame(data, index=[1222, 1092, 1875])

# 计算单个值的小数位数
def get_decimal_places(val):
    if '.' in str(val):
        return len(str(val).split('.')[1])
    return 0

# 生成bid和ask对应的小数位数列
df['bid_decimals'] = df['bid_1'].apply(get_decimal_places)
df['ask_decimals'] = df['ask_1'].apply(get_decimal_places)

# 逐行格式化bid_2和ask_2
df['bid_2'] = df.apply(lambda row: f"{row['bid_2']:.{row['bid_decimals']}f}", axis=1)
df['ask_2'] = df.apply(lambda row: f"{row['ask_2']:.{row['ask_decimals']}f}", axis=1)

# 输出结果(保留目标列)
print(df[['symbol', 'bid_1', 'ask_1', 'bid_2', 'ask_2']])

说明

  1. 小数位数计算:通过get_decimal_places函数将bid_1/ask_1转为字符串,拆分小数点后的部分,统计长度得到需要保留的小数位数。
  2. 逐行格式化:用apply(axis=1)逐行处理数据,使用Python的f-string格式化语法,按照对应列的小数位数格式化bid_2/ask_2,自动补全末尾的零。
  3. 类型说明:如果需要将bid_2/ask_2保持数值类型,可在格式化后添加.astype(float),但float类型会自动省略末尾的零;若要保留显示格式,建议保持字符串类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 17:54:34