首页 > 解决方案 > 在字符串值的末尾添加零而不更改列类型

问题描述

我的df表中有字符串列,如下所示:

d = {'col1': ['1.2', '3.4', '1.99', '0.14', '2.9', '', '2.3']}
df = pd.DataFrame(data=d)
df

在此处输入图像描述

我想将此列转换,使所有值都包含两位小数,但不将此列的类型更改为数字类型

预期输出 - 带有值的字符串列:

在此处输入图像描述

我对 Python 有点陌生,我尝试填充 0如何在 Python 中用零填充数字字符串?取决于列中值的长度,但它实际上没有用。

你知道如何处理吗?

标签: pythonpandasdataframe

解决方案


使用str.ljust

df['col1'] = df['col1'].str.ljust(4, '0')

输出:

   col1
0  1.20
1  3.40
2  1.99
3  0.14
4  2.90
5  2.30

要保持空行不变:

df['col1'] = df['col1'].mask(df['col1'].astype(bool), df['col1'].str.ljust(4, '0'))

输出:

   col1
0  1.20
1  3.40
2  1.99
3  0.14
4  2.90
5      
6  2.30

注意。获取最大字符串长度:df['col1'].str.len().max()->4


推荐阅读