首页 > 解决方案 > 熊猫在带有数字和字符串的列中应用小数

问题描述

我有一列包含数字和字符串。例如:

Result:
Failed
8.05
9
7

如何更改数据以显示两位小数,即如下?

Result:
Failed
8.05
9.00
7.00

我正在尝试以下方法,但它不起作用。谢谢你的帮助!

df['Result'] =  df['Result'].apply('{:.2f}'.format)

标签: pythonpandasdecimalapplyseries

解决方案


我认为需要创建布尔掩码:

#numeric with strings
df = pd.DataFrame({'Result':['Failed',8.05,9,7]})

mask = pd.to_numeric(df['Result'], errors='coerce').notnull()
df.loc[mask, 'Result'] =  df.loc[mask, 'Result'].apply('{:.2f}'.format)
print (df)
0  Failed
1    8.05
2    9.00
3    7.00

如果所有字符串都需要首先转换为floats:

df = pd.DataFrame({'Result':['Failed','8.05','9','7']})

mask = pd.to_numeric(df['Result'], errors='coerce').notnull()
df.loc[mask, 'Result'] =  df.loc[mask, 'Result'].astype(float).apply('{:.2f}'.format)
print (df)
   Result
0  Failed
1    8.05
2    9.00
3    7.00

推荐阅读