我有一个带有字符串的熊猫数据框,但我想要浮点数。但字符串上的单位不同。一列的单位可能是毫米,几列的单位可能是厘米。下一栏可能是 g,其中有几个单位是 kg,依此类推。
如何将每个值转换为相同单位的浮点数? (即,如果我将所有内容更改为以毫米为单位的浮点数,则“4.56 厘米”应转换为 45.6,而不是 4.56)。
示例
我们需要最少且可重复的示例来回答。
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