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

Python 3.8+如何将Pandas中带单位的文件大小转字节以做运算?

处理Pandas中带单位的数值转换问题

现成库方案

如果不想自己写太多逻辑,可以用pint库——它专门处理带单位的数值计算,支持直接转换单位:

首先安装库:

pip install pint

然后写转换逻辑:

import pandas as pd
from pint import UnitRegistry

# 初始化单位注册表
ur = UnitRegistry()
# 映射数据里的单位到pint的标准单位
unit_map = {
    'K': ur.kilobyte,
    'M': ur.megabyte,
    'G': ur.gigabyte,
    'B': ur.byte,
    '': ur.byte  # 纯数字默认按字节算
}

def convert_to_bytes(val):
    if isinstance(val, str):
        # 百分比直接保留
        if '%' in val:
            return val
        # 拆分数字和单位部分
        num_part = ''.join([c for c in val if c.isdigit() or c == '.'])
        unit_part = ''.join([c for c in val if c.isalpha()])
        num = float(num_part) if num_part else 0.0
        # 转换为字节并返回数值
        return (num * unit_map.get(unit_part.upper(), ur.byte)).to(ur.byte).magnitude
    # 已经是数字的直接返回
    return val

# 应用到整个DataFrame
df = df.applymap(convert_to_bytes)

轻量自定义实现(无额外依赖)

如果追求性能或者不想装新库,直接写个简单的映射函数就行,逻辑清晰还高效:

import pandas as pd

# 定义单位换算系数(这里是二进制换算,1K=1024字节;如果要十进制就改成1000)
unit_coeffs = {
    'K': 1024,
    'M': 1024**2,
    'G': 1024**3,
    'B': 1,
    '': 1
}

def str_to_bytes(val):
    if isinstance(val, str):
        # 百分比不处理
        if '%' in val:
            return val
        # 纯数字直接转成数值
        if val.isdigit():
            return int(val)
        # 找到单位开始的位置
        split_idx = None
        for i, c in enumerate(val):
            if c.isalpha():
                split_idx = i
                break
        # 没有单位的情况
        if split_idx is None:
            return float(val)
        # 拆分数字和单位
        num_str = val[:split_idx].strip()
        unit = val[split_idx:].strip().upper()
        num = float(num_str)
        # 计算字节数
        return num * unit_coeffs.get(unit, 1)
    return val

# 批量转换
df = df.applymap(str_to_bytes)

补充说明

  • 换算标准:上面的代码用的是二进制换算(1GiB=1024MiB),如果需要十进制(1GB=1000MB),把unit_coeffs里的1024改成1000即可。
  • 性能对比:自定义函数因为逻辑简单,没有外部库的额外开销,处理大数据量时比pint更快;pint胜在通用性强,支持更多复杂单位,适合扩展场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 12:03:33