0
votes

Python Pandas DataFrame personnaliser l'index

J'ai un simple DataFrame et 2 variables de chaîne comme ci-dessous: xxx

Je voudrais renommer l'index à quelque chose comme "str1-str2 - ###": XXX

Toute aide est très appréciée!


0 commentaires

5 Réponses :


1
votes
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

0 commentaires

2
votes

une autre manière plus courte ici xxx


essayez d'utiliser listComp, zip et f-string pour créer une liste de la liste des joints chaîne de caractères. Enfin, attribuez-le à df.index xxx


0 commentaires

3
votes

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


1 commentaires

Le seul problème que je vois avec c'est que le nombre de zéros est fixé à deux. La question mentionne ### indiquant que trois chiffres sont nécessaires au total. Donc, le nombre de chiffres devraient changer en fonction de l'index



1
votes

Voici une solution facile à comprendre, une solution unique de la ligne: xxx

sortie: xxx

utilisant Zill évite le problème d'indexer avec des nombres tels que 00100 . Parce que vous avez mentionné le format 'str1-str2 - ###' , 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.


0 commentaires

0
votes

a compris un moyen: xxx

;)


1 commentaires

Heureux que vous pensiez comprendre, mais s'il vous plaît accepter l'une des réponses. Merci