J'ai un simple DataFrame et 2 variables de chaîne comme ci-dessous: Je voudrais renommer l'index à quelque chose comme "str1-str2 - ###": P> Toute aide est très appréciée! p> p>
5 Réponses :
df = pd.DataFrame(\ {'col1': ['x' ,'x' ,'x' ,'x' ,'x'],\ },) loops = len(df) + 1 list_index = [] for x in range(1,loops): list_index.append("USD-pricing-00"+str(x)) df.index = list_index
une autre manière plus courte ici essayez d'utiliser listComp,
zip code> et
f-string code> pour créer une liste de la liste des joints chaîne de caractères. Enfin, attribuez-le à
df.index code> p>
Utilisation: Dataframe.add_prefix A>, Vous avez également besoin d'utiliser DataFrame.Transposez à l'avance Parce que la méthode add_prefix code> sur les colonnes. Il est également nécessaire d'utiliser Transposer en fin de compte pour renvoyer le Dataframe au formulaire d'origine P>
prefix=str1+'-'+str2+'-'
df['index']=[(3-len(key))*'0'+key for key in df['index'].astype(str)]
df=df.set_index('index').T.add_prefix(prefix).T
print(df)
col1
index
USD-pricing-000 x
USD-pricing-001 x
USD-pricing-002 x
USD-pricing-003 x
USD-pricing-004 x
USD-pricing-005 x
USD-pricing-006 x
USD-pricing-007 x
USD-pricing-008 x
USD-pricing-009 x
USD-pricing-010 x
USD-pricing-011 x
USD-pricing-012 x
USD-pricing-013 x
Le seul problème que je vois avec c'est que le nombre de zéros est fixé à deux. La question mentionne ### code> indiquant que trois chiffres sont nécessaires au total. Donc, le nombre de chiffres devraient changer en fonction de l'index
Voici une solution facile à comprendre, une solution unique de la ligne: sortie: p> utilisant Zill évite le problème d'indexer avec des nombres tels que 00100 code>. Parce que vous avez mentionné le format
'str1-str2 - ###' code>, je suppose que le nombre doit être à 3 chiffres. L'utilisation de certains des formats précédents, 00 sera corrigé et entraînera des numéros à 4 chiffres avec des valeurs d'index plus importantes. P> P>
a compris un moyen: ;) p> p>
Heureux que vous pensiez comprendre, mais s'il vous plaît accepter l'une des réponses. Merci