如何从Pandas Series提取带M/k单位的数字并统一转换单位?
处理带单位的大小列数值转换
需求说明
数据集的size列包含带单位的大小值(如19M、853k),需完成以下操作:
- 提取字符串中的数字部分
- 根据单位(M/k)转换为统一数值(可选择转兆字节、字节等)
- 将结果转换为数值类型
实现方案(Python Pandas)
以下提供两种常用的统一单位转换方式,基于Pandas处理数据集:
方式1:统一转换为兆字节(MB)
import pandas as pd # 读取数据集(替换为你的数据集路径/方式) df = pd.read_csv("your_dataset.csv") def convert_to_mb(size_str): # 提取数字部分(支持小数) num = float(''.join([c for c in size_str if c.isdigit() or c == '.'])) # 提取单位并统一为大写 unit = size_str[-1].upper() # 根据单位计算 if unit == 'K': return num / 1024 elif unit == 'M': return num else: return None # 未知单位返回空,可按需修改逻辑 # 生成转换后的列,或直接替换原size列 df['size_mb'] = df['size'].apply(convert_to_mb)
方式2:统一转换为字节(Bytes)
def convert_to_bytes(size_str): num = float(''.join([c for c in size_str if c.isdigit() or c == '.'])) unit = size_str[-1].upper() if unit == 'K': return num * 1024 elif unit == 'M': return num * 1024 * 1024 else: return None df['size_bytes'] = df['size'].apply(convert_to_bytes)
补充说明
- 代码支持带小数的数值(如
2.3M、512.5k) - 若存在未知单位,当前逻辑返回
None,可根据实际需求调整(如抛出提示、设为0等)
内容的提问来源于stack exchange,提问作者mahi aslam
相关产品推荐
相关产品推荐

