web-dev-qa-db-fra.com

Est-ce que pandas pourrait utiliser la colonne comme index?

J'ai un tableur comme ça:

Locality    2005    2006    2007    2008    2009

ABBOTSFORD  427000  448000  602500  600000  638500
ABERFELDIE  534000  600000  735000  710000  775000
AIREYS INLET459000  440000  430000  517500  512500

Je ne veux pas échanger manuellement la colonne avec la ligne. Est-il possible d'utiliser pandas en lisant des données dans une liste comme celle-ci:

data['ABBOTSFORD']=[427000,448000,602500,600000,638500]
data['ABERFELDIE']=[534000,600000,735000,710000,775000]
data['AIREYS INLET']=[459000,440000,430000,517500,512500]
76
Chan Austin

Oui, avec set_index , vous pouvez définir Locality votre index de ligne.

data.set_index('Locality', inplace=True)

Si inplace=True n'est pas fourni, set_index renvoie le cadre de données modifié.

Exemple:

> import pandas as pd
> df = pd.DataFrame([['ABBOTSFORD', 427000, 448000],
                     ['ABERFELDIE', 534000, 600000]],
                    columns=['Locality', 2005, 2006])

> df
     Locality    2005    2006
0  ABBOTSFORD  427000  448000
1  ABERFELDIE  534000  600000

> df.set_index('Locality', inplace=True)
> df
              2005    2006
Locality                  
ABBOTSFORD  427000  448000
ABERFELDIE  534000  600000

> df.loc['ABBOTSFORD']
2005    427000
2006    448000
Name: ABBOTSFORD, dtype: int64

> df.loc['ABBOTSFORD'][2005]
427000

> df.loc['ABBOTSFORD'].values
array([427000, 448000])

> df.loc['ABBOTSFORD'].tolist()
[427000, 448000]
152
Michael Hoff

Vous pouvez modifier l'index comme expliqué précédemment à l'aide de set_index. Vous n'avez pas besoin d'échanger manuellement les lignes avec les colonnes, il existe une méthode de transposition (data.T) dans pandas qui le fait à votre place:

> df = pd.DataFrame([['ABBOTSFORD', 427000, 448000],
                    ['ABERFELDIE', 534000, 600000]],
                    columns=['Locality', 2005, 2006])

> newdf = df.set_index('Locality').T
> newdf

Locality    ABBOTSFORD  ABERFELDIE
2005        427000      534000
2006        448000      600000

alors vous pouvez récupérer les valeurs de la colonne dataframe et les transformer en une liste:

> newdf['ABBOTSFORD'].values.tolist()

[427000, 448000]
11
famargar

Vous pouvez définir l'index de colonne à l'aide du paramètre index_col disponible lors de la lecture d'un tableur dans Pandas.

Voici ma solution:

  1. Tout d’abord, importez pandas comme pd: import pandas as pd

  2. Lisez le nom du fichier en utilisant pd.read_Excel () (si vos données sont dans une feuille de calcul) et définissez l'index sur 'Locality' en spécifiant le paramètre index_col .

    df = pd.read_Excel('testexcel.xlsx', index_col=0)

    À ce stade, si vous obtenez une erreur "Aucun module nommé xlrd", installez-le à l'aide de pip install xlrd.

  3. Pour l'inspection visuelle, lisez le cadre de données en utilisant df.head() qui imprimera la sortie suivante sc

  4. Maintenant, vous pouvez récupérer les valeurs des colonnes désirées du dataframe et l’imprimer

    sc2

0
Steffi Keran Rani J