使用Python将混合盎司、磅单位的重量列批量转换为磅单位
解决方法
你之前的拆分逻辑只适配了带lb单位的行,对仅含盎司的行无法正确拆分,改用正则提取数值的方式可以覆盖所有格式:
1 盎司 = 1/16 磅,计算逻辑非常直接。
完整代码示例
import pandas as pd # 构造测试数据,你可以替换成自己的df data = {'weight': ['15.00 oz', '19.00 oz', '2 lb 15.00 oz ', '1 lb 19.00 oz']} df = pd.DataFrame(data) # 用正则分别提取磅、盎司的数值,未匹配到的填充为0 df[['lb_val', 'oz_val']] = df['weight'].str.extract( r'(?:(\d+)\s*lb)?\s*(?:([\d.]+)\s*oz)?' ).fillna(0).astype(float) # 计算总磅数 df['weight_lb'] = df['lb_val'] + df['oz_val'] / 16 # 如果需要输出为带lb后缀的字符串格式,和你的预期示例完全对齐 df['weight'] = df['weight_lb'].apply(lambda x: f"{x:.4f} lb") # 输出结果时可以删掉中间辅助列 df = df.drop(columns=['lb_val', 'oz_val', 'weight_lb'])
输出结果
weight 0 0.9375 lb 1 1.1875 lb 2 2.9375 lb 3 2.1875 lb
内容的提问来源于stack exchange,提问作者user16580724
相关产品推荐
相关产品推荐

