如何将不同单位的字符串转换为相同单位的浮点数?

问题描述 投票:0回答:1

我有一个带有字符串的熊猫数据框,但我想要浮点数。但字符串上的单位不同。一列的单位可能是毫米,几列的单位可能是厘米。下一栏可能是 g,其中有几个单位是 kg,依此类推。

如何将每个值转换为相同单位的浮点数? (即,如果我将所有内容更改为以毫米为单位的浮点数,则“4.56 厘米”应转换为 45.6,而不是 4.56)。

pandas type-conversion
1个回答
0
投票

示例

我们需要最少且可重复的示例来回答。

import pandas as pd
import numpy as np

data = {'length': ['4.56 cm', '100 mm', '3.5 cm', '10 mm'], 
        'weight': ['200 g', '0.5 kg', '300 g', '2 kg']}
df = pd.DataFrame(data)

df:

    length  weight
0  4.56 cm   200 g
1   100 mm  0.5 kg
2   3.5 cm   300 g
3    10 mm    2 kg

代码

s1 = df['length'].str.replace('[A-Za-z]', '', regex=True).astype('float')
df['length(mm)'] = np.where(df['length'].str.contains('cm'), s1 * 10, s1)

s2 = df['weight'].str.replace('[A-Za-z]', '', regex=True).astype('float')
df['weight(g)'] = np.where(df['weight'].str.contains('kg'), s2 * 1000, s2)

df:

    length  weight  length(mm)  weight(g)
0  4.56 cm   200 g        45.6      200.0
1   100 mm  0.5 kg       100.0      500.0
2   3.5 cm   300 g        35.0      300.0
3    10 mm    2 kg        10.0     2000.0
© www.soinside.com 2019 - 2024. All rights reserved.