Python 根据当前值的长度更改数据帧中的值

Python 根据当前值的长度更改数据帧中的值,python,pandas,Python,Pandas,我有一个pandas数据框架,它有一个特定的列,该列的值应该是四。如果长度为3,我希望在值的开头添加一个“0”。例如: a b c 1 2 0054 3 6 021 5 5 0098 8 2 012 因此,在c列中,我想将第二行更改为“0021”,最后一行更改为“0012”。这些值已经是字符串。我试过做: df.loc[len(df['c']) == 3, 'c'] = '0' + df['c'] 但它不起作用。谢谢你的帮

我有一个pandas数据框架,它有一个特定的列,该列的值应该是四。如果长度为3,我希望在值的开头添加一个“0”。例如:

a    b    c    
1    2    0054
3    6    021
5    5    0098
8    2    012
因此,在c列中,我想将第二行更改为“0021”,最后一行更改为“0012”。这些值已经是字符串。我试过做:

 df.loc[len(df['c']) == 3, 'c'] = '0' + df['c']

但它不起作用。谢谢你的帮助

如果
C
中的类型为int,则可以执行以下操作:

df['C'].apply(lambda x: ('0'*(4-len(str(x))))+str(x) if(len(str(x)) < 4) else str(x))
df['C'].应用(lambda x:('0'*(4-len(str(x)))+str(x)if(len(str(x))<4-else-str(x))
在lambda函数中,我检查
x
中的位数/字符数是否少于四个。如果是,我会在前面加上零,这样
x
中的位数/字符数将是四个(这也称为填充)。如果不是,则返回字符串形式的值


如果您的类型是string,您可以删除
str()
函数调用,但这两种方法都可以

基本上你可以只做
df['c']=df['c'].str.zfill(4)