我有一个pandas数据框,其中某些列具有数值,而其他列则没有,如下所示:
City a b c
Detroit 129 0.54 2,118.00
East 188 0.79 4,624.4712
Houston 154 0.65 3,492.1422
Los Angeles 266 1.00 7,426.00
Miami 26 0.11 792.18
MidWest 56 0.24 772.7813
我想将这些数值四舍五入到小数点后两位,这是我要使用的:
df = df.replace(np.nan, '', regex=True)
之后df变为:
City a b c
Detroit 129.0 0.54 2,118.0
East 188.0 0.79 4,624.47
Houston 154.0 0.65 3,492.14
Los Angeles 266.0 1.0 7,426.0
Miami 26.0 0.11 792.18
MidWest 56.0 0.24 772.78
大多数情况下都可以正常工作,但是也可以将适当的整数转换为小数,即将100之类的值四舍五入为100.0。我想要这样的数据框:
City a b c
Detroit 129 0.54 2,118
East 188 0.79 4,624.47
Houston 154 0.65 3,492.14
Los Angeles 266 1 7,426
Miami 26 0.11 792.18
MidWest 56 0.24 772.28
我想保留这些值作为适当的整数本身,同时在所有数字列中将其他值四舍五入到小数点后两位。我该怎么办?
答案 0 :(得分:2)
使用g format
:
常规格式。对于给定的精度p> = 1,这会将数字四舍五入为p个有效数字,然后根据结果的大小以定点格式或科学计数法格式化结果。
精确规则如下:假设以表示类型'e'和精度p-1格式化的结果将具有指数exp。然后,如果-4 <= exp
正负无穷大,正负零和nans的格式分别为inf,-inf,0,-0和nan,无论精度如何。
精度0等同于精度1。默认精度为6。
df.update(df.select_dtypes(include=np.number).applymap('{:,g}'.format))
print (df)
City a b c
0 Detroit 129 0.54 2,118
1 East 188 0.79 4,624.47
2 Houston 154 0.65 3,492.14
3 Los Angeles 266 1 7,426
4 Miami 26 0.11 792.18
5 MidWest 56 0.24 772.781