web-dev-qa-db-fra.com

Comment définir dans pandas la première colonne et la première ligne comme index?

Lorsque je lis dans un CSV, je peux dire pd.read_csv('my.csv', index_col=3) et il définit la troisième colonne comme index.

Comment puis-je faire de même si j'ai un pandas dataframe en mémoire? Et comment puis-je dire d'utiliser la première ligne également comme index? La première colonne et la ligne sont des chaînes, le reste du la matrice est un entier.

21
Oli

Vous pouvez essayer cela quel que soit le nombre de lignes

df = pd.read_csv ('data.csv', index_col = 0)

9
Y. Yazarel

Essayez peut-être set_index ()?

df = df.set_index([2])
9
Annie Guo

Faire de la première (ou nième) colonne l'index dans un ordre croissant de verbosité:

df.set_index(list(df)[0])
df.set_index(df.columns[0])
df.set_index(df.columns.tolist()[0])

Faire de la première (ou nième ligne) l'index:

df.set_index(df.iloc[0].values)

Vous pouvez utiliser les deux si vous voulez un index à plusieurs niveaux:

df.set_index([df.iloc[0], df.columns[0]])

Notez que l'utilisation d'une colonne comme index la supprimera automatiquement en tant que colonne. L'utilisation d'une ligne comme index n'est qu'une opération de copie et ne supprimera pas la ligne du DataFrame.

2
villasv