J'ai un dataframe comme ci-dessous.
id 111111 123456 012345 000234 000012 987654
donc si vous regardez la ligne 3,4,5 la longueur des identifiants est inférieure à 6
id 111111 123456 12345 234 12 987654
Je veux le convertir en dessous (en gros, ajoutez des zéros à l'avant pour en faire une longueur de six)
df = pd.DataFrame([111111,123456,12345,234,12,987654],columns=['id'])
3 Réponses :
Vous devez changer le type de données en chaîne ou bien les zéros initiaux seront coupés. Voici ma solution. J'espère que cela aidera
df = pd.DataFrame([111111,123456,12345,234,12,987654],columns=['id']) df = df.astype(str) df['id'] = df['id'].apply(lambda x: x if len(x)==6 else '0'*(6-len(x))+x) df: id 111111 123456 012345 000234 000012 987654
Merci Bhanu pour votre réponse. Vous répondez rapidement à ma question. donc 1 vote positif.
Utilisation de
df.id.astype(str).str.pad(6,'left','0') 0 111111 1 123456 2 012345 3 000234 4 000012 5 987654 Name: id, dtype: object
Très gentil de ta part.
@SandhyaThotakura yw: _ bonne année
Essayez zfill , convertissez d'abord les entiers en chaîne dtype puis utilisez l'accesseur de chaîne puis zfill:
0 111111 1 123456 2 012345 3 000234 4 000012 5 987654 Name: id, dtype: object
Sortie:
df['id'].astype(str).str.zfill(6)
Merci d'avoir répondu. Mais j'irai avec W-B car je pense que sa réponse est plus robuste. Merci de m'avoir appris le concept de zfill (int)
@SandhyaThotakura Bon codage!
Jetez peut-être un œil à stackoverflow.com/questions/134934/ …