129 votes

Comment imprimer une ligne spécifique d'un DataFrame pandas ?

J'ai un cadre de données massif, et je reçois l'erreur :

TypeError: ("Empty 'DataFrame': no numeric data to plot", 'occurred at index 159220')

J'ai déjà supprimé les valeurs nulles et vérifié les types de données pour le DataFrame, je n'ai donc aucune idée de la raison de l'échec sur cette ligne.

Comment puis-je imprimer uniquement cette ligne (à l'index 159220) du cadre de données ?

Merci

9 votes

print(df.iloc[[index]])

139voto

piRSquared Points 159

Lorsque vous appelez loc avec une valeur scalaire, vous obtenez un pd.Series . Cette série aura alors un dtype . Si vous voulez voir la ligne telle qu'elle est dans le dataframe, vous devrez passer un tableau comme indexer à loc .

Enveloppez votre valeur d'index avec une paire supplémentaire de crochets.

print(df.loc[[159220]])

9 votes

J'ai vu 3 réponses différentes, (df.loc[[]], df.ix[], et df.iloc[]) y a-t-il une différence entre elles ? Ou un avantage de l'un par rapport aux autres ?

5 votes

@Acoustic77 oui. ix sera déprécié. Et j'explique le but de la double parenthèse

0 votes

Je l'ai eu, et y a-t-il un avantage de loc sur iloc ?

124voto

kamran kausar Points 311

Pour imprimer une ligne spécifique, nous disposons de deux méthodes pandas.

  1. loc - Il ne reçoit que l'étiquette, c'est-à-dire le nom de la colonne ou les caractéristiques.
  2. iloc - Ici, i représente un nombre entier, en fait le numéro de ligne.
  3. ix - Il s'agit d'un mélange d'étiquettes et d'entiers.

Comment utiliser pour une rangée spécifique

  1. loc

    df.loc[row,column]

Pour la première ligne et toutes les colonnes

df.loc[0,:]

Pour la première ligne et une colonne spécifique

df.loc[0,'column_name']
  1. iloc

Pour la première ligne et toutes les colonnes

df.iloc[0,:]

Pour la première ligne et une colonne spécifique, c'est-à-dire les trois premières colonnes.

df.iloc[0,0:3]

1 votes

Merci ! C'est exactement ce dont j'avais besoin ! Une merveilleuse explication simple.

1 votes

Option 3 ix a été supprimé de Pandas à partir de la version 1.0.

12voto

CK Chen Points 466

Utilisez ix opérateur :

print df.ix[159220]

7 votes

Pour citer le message que cela génère : DeprecationWarning : .ix est déprécié. Veuillez utiliser .loc pour l'indexation basée sur les étiquettes ou .iloc pour l'indexation positionnelle Voir la documentation ici : pandas.pydata.org/pandas-docs/stable/ Ce paquet est séparé du paquet ipykernel et nous pouvons donc éviter de faire des importations jusqu'à ce que le paquet ipykernel ait été importé.

2 votes

Cela ne fonctionne plus du tout à partir de pandas 1.0 (publié le 29 janvier 2020).

8voto

BERKO Points 109

Si vous voulez afficher à row=159220

row=159220

#To display in a table format
display(df.loc[row:row])
display(df.iloc[row:row+1])

#To display in print format
display(df.loc[row])
display(df.iloc[row])

7voto

Batman Points 4202

On dirait que vous appelez df.plot() . Cette erreur indique que vous essayez de intrigue un cadre qui n'a pas de données numériques. Les types de données ne devraient pas affecter ce que vous print() .

Utilisez print(df.iloc[159220])

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X