我想删除列中的最后一个字符并将列转换为float。列的类型是对象。
##[error]No web project was found in the repository. Web projects are identified by presence of either a web.config file or wwwroot folder in the directory.
##[error]Project file(s) matching the specified pattern were not found.
我尝试使用13.3\T
9.4\J
24.09006465036784\C
24.4140625\B
35.73069852941176\M
,但没有成功。
df[column] = df[column].str[:5]
它没有删除最后一个字符。 遇到错误。无法将字符串转换为浮点数
答案 0 :(得分:1)
使用以下命令删除最后2个字符并转换为float:
this.storage.get('LANG').then((vallang) => {
if (vallang) {
this.detailsfetch(vallang);
}
});
this.events.subscribe('language:select', (data) => { // update from app.component.ts
if (data) {
this.detailsfetch(data);
}
});
您还可以使用以下方法:
df[column] = df[column].str[:-2].astype(float)
然后您可以使用以下内容将数据四舍五入到小数点后两位:
df[column] = pd.to_numeric(df[column].str[:-2])
输出:
df = df.round(2)
print(df)
答案 1 :(得分:1)
您可以使用Series.str.extract
获取floats
或integers
,然后由Series.astype
进行投射,并由Series.round
进行最后一轮:
df['column'] = (df['column'].str.extract(r'(\d+\.\d+|\d+)', expand=False)
.astype(float)
.round(2))
print (df)
column
0 13.30
1 9.40
2 24.09
3 24.41
4 35.73
如果始终只浮动:
df['column'] = df['column'].str.extract(r'(\d+\.\d+)', expand=False).astype(float).round(2)
print (df)
column
0 13.30
1 9.40
2 24.09
3 24.41
4 35.73
编辑:
def my_round(x):
x = x.str.extract(r'(\d+\.\d+)', expand=False)
x = x.astype(float).round(2)
return(x)
df.iloc[:, 61:64] = df.iloc[:, 61:64].astype(str).apply(my_round)
另一个想法是只转换对象非数字列:
cols = df.iloc[:, 61:64].select_dtypes(object).columns
df[cols] = df[cols].apply(my_round)