如何将含kg/g的Pandas Series统一转换为克数值?
Pandas Series单位统一转换为克的实现方法
给定包含kg/g单位的字符串Series,需要将所有值统一转换为以克为单位的整数,其中kg对应的数值乘以1000,g对应的数值保持原整数状态,以下是两种可行的实现方式:
方法一:正则提取+批量计算
通过正则表达式拆分数值和单位,再批量计算转换结果,适合处理大规模数据:
import pandas as pd s = pd.Series({0: '1kg', 1: '500g', 2: '200g', 3: '3.2kg'}) # 提取数值(支持整数/小数)和单位 extracted = s.str.extract(r'^(\d+\.?\d*)(kg|g)$') extracted.columns = ['数值', '单位'] # 将数值转为浮点型,再根据单位计算克数 extracted['数值'] = extracted['数值'].astype(float) result = extracted.apply(lambda row: row['数值'] * 1000 if row['单位'] == 'kg' else row['数值'], axis=1).astype(int) print(result)
输出结果:
0 1000 1 500 2 200 3 3200 dtype: int64
方法二:元素级自定义函数转换
通过apply遍历每个元素,用自定义函数处理单位转换,逻辑直观易懂:
import pandas as pd s = pd.Series({0: '1kg', 1: '500g', 2: '200g'}) def to_grams(text): if 'kg' in text: return int(float(text.replace('kg', '')) * 1000) elif 'g' in text: return int(float(text.replace('g', ''))) result = s.apply(to_grams) print(result)
输出结果:
0 1000 1 500 2 200 dtype: int64
内容的提问来源于stack exchange,提问作者INGl0R1AM0R1
相关产品推荐
相关产品推荐

