用前导零更新 pandas 数据框列的值,其中值的长度等于 2

问题描述 投票:0回答:1

我有一个示例 pandas 数据框 (df),具有以下值:

姓名 标签
A12
67
鼠标 20
猴子 10.8
鹦鹉 V20.6

我需要更新标签列的值,该列混合了数字标签和整数标签,但存储为字符串,在某些情况下具有前导零。

我需要的是标签长度小于3的地方,需要有一个前导零,并且小数点左边的数字长度小于3的地方,也需要有这个前导零。

所以,我需要的表输出是:

姓名 标签
A12
067
鼠标 020
猴子 010.8
鹦鹉 V20.6

我已经为第一个标准尝试了一些不同的 df.loc 迭代,其中长度等于 3,但我收到了一个以前从未遇到过的错误,并且找不到太多信息:“无法使用单个 bool 来索引 setitem”

我什至不知道如何实现第二个标准。还可能吗?

python pandas conditional-statements
1个回答
0
投票

代码

# If there are integers mixed in the 'Label' column, convert to str
df['Label'] = df['Label'].astype('str')

# condition
cond = df['Label'].str.extract('(^\d+)')[0].str.len().lt(3)

# boolean masking: If the condition is True, pad with a leading '0'
df['Label'] = df['Label'].mask(cond, df['Label'].radd('0'))

df

© www.soinside.com 2019 - 2024. All rights reserved.