Pandas数据格式化需求:移除前导零、保留三位小数及整数转换
解决方案:Pandas DataFrame 列格式化处理
没问题,我来帮你搞定这个DataFrame的格式化需求!这里有一个基于Pandas的完整解决方案,完全匹配你预期的输出效果:
步骤1:构造示例DataFrame
首先我们先把你提供的原始数据转换成Pandas DataFrame:
import pandas as pd data = { 'Var': ['Var1', 'Var2', 'Var3', 'Var4', 'Var5', 'Var6', 'Var7', 'Var8', 'Var9', 'Var10'], 'count': [33214.0, 55381.0, 67469.0, 55191.0, 46297.0, 1700.0, 998.0, 45.0, 2889.0, 7353.0], 'mean': [-216.687166, -130.082888, 46.732620, 133.425134, -0.240642, -9.200535, 263.906417, -11.759358, 0.280749, 216.684492], 'std': [-24.076352, -18.583270, 15.577540, 66.712567, -0.048128, -4.600267, 37.700917, -2.351872, 0.140374, 43.336898] } df = pd.DataFrame(data).set_index('Var')
步骤2:处理各列格式
接下来我们对不同列分别进行格式化:
处理count列:移除小数点后数字
因为count列的数值都是整数的浮点形式(比如33214.0),直接转换为整数类型即可:
df['count'] = df['count'].astype(int)
处理mean和std列:四舍五入+移除前导零
我们先对数值四舍五入保留三位小数,再通过字符串替换去掉前导零(比如0.281变为.281,-0.241变为-.241):
# 链式操作:四舍五入→转字符串→正则替换前导零 df[['mean', 'std']] = df[['mean', 'std']].round(3).astype(str).replace( {'0\.': '\.', '-0\.': '-\.'}, regex=True )
最终结果
处理完成后,你的DataFrame会变成如下格式:
| Var | count | mean | std |
|---|---|---|---|
| Var1 | 33214 | -216.687 | -24.076 |
| Var2 | 55381 | -130.083 | -18.583 |
| Var3 | 67469 | 46.733 | 15.578 |
| Var4 | 55191 | 133.425 | 66.713 |
| Var5 | 46297 | -.241 | -.048 |
| Var6 | 1700 | -9.201 | -4.600 |
| Var7 | 998 | 263.906 | 37.701 |
| Var8 | 45 | -11.759 | -2.352 |
| Var9 | 2889 | .281 | .140 |
| Var10 | 7353 | 216.684 | 43.337 |
内容的提问来源于stack exchange,提问作者qwerty
相关产品推荐
相关产品推荐

