我正在尝试转换数据框中的列,该列的名称为'Weight',其值为str
格式
例如:"175lbs"
我正在使用映射器将所有这些值转换为float
我使用映射器尝试了lambda函数
def WeightConverter(w):
return float(w[:len(w)-3])
df1['Weight'] = df1.Weight.map(lambda x : WeightConverter(x))
df1['Weight'].head()
但是,type(df1['Weight'][0])
返回str
。预期结果:175.0
类型的float
答案 0 :(得分:4)
尝试首先使用正则表达式提取数字,然后您可以进行任何进一步的操作。
df = pd.DataFrame({'Weight' : np.random.randint(0,250,size=500)})
df['Weight'] = df['Weight'].astype(str) + 'lbs'
print(df.head(10))
Weight
0 224lbs
1 11lbs
2 218lbs
3 132lbs
4 55lbs
5 87lbs
6 62lbs
7 4lbs
8 38lbs
9 218lbs
然后将(\d+)
与str.extract
一起使用
df['Weight_Float'] = df['Weight'].str.extract(r'(\d+(?:\.\d+)?)').astype(float)
print(df.head(10))
Weight Weight_Float
0 119lbs 119.0
1 7lbs 7.0
2 241lbs 241.0
3 85lbs 85.0
4 144lbs 144.0
5 219lbs 219.0
6 160lbs 160.0
7 173lbs 173.0
8 166lbs 166.0
9 35lbs 35.0
(
启动一个捕获组\d
速记字符类,它匹配所有数字;它是
与[0-9]相同+
一个或多个表达式)
结束捕获组