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

时间:2017-01-05 15:15:51

标签: python pandas

我有一个pandas数据框,它有一个特定的列,其长度应为4。如果长度为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']

但它没有成功。谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

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

df['C'].apply(lambda x: ('0'*(4-len(str(x))))+str(x) if(len(str(x)) < 4) else str(x))

在lambda函数中,我检查x中的数字/字符数是否小于4。如果是,我在前面添加零,以便x中的数字/字符数为4(这也称为 padding )。如果没有,我将值返回为字符串。

如果您的类型是字符串,则可以删除str()函数调用,但它可以以任何方式工作。