Maison >développement back-end >Tutoriel Python >Comment puis-je convertir les colonnes Pandas avec des valeurs manquantes en types de données entiers ?

Comment puis-je convertir les colonnes Pandas avec des valeurs manquantes en types de données entiers ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-22 02:35:16393parcourir

How Can I Convert Pandas Columns with Missing Values to Integer Data Types?

Conversion des colonnes Pandas avec des valeurs manquantes en entiers

Lorsque vous traitez des trames de données Pandas, il est souvent nécessaire de spécifier le type de données de certaines colonnes. Cependant, si une colonne contient des valeurs manquantes ou vides (NaN), sa conversion en un type entier tel que « int » peut présenter des défis.

Problème rencontré :

Pour illustrer le problème, supposons que nous ayons une trame de données Pandas lue à partir d'un fichier CSV, avec une colonne nommée « id » qui contient des NaN. Cependant, nous devons spécifier la colonne « id » comme un type entier.

Messages d'erreur :

Lors de la tentative de conversion directe de la colonne « id » en un nombre entier lors de la lecture du fichier CSV, nous rencontrons l'erreur suivante :

df= pd.read_csv("data.csv", dtype={'id': int})
error: Integer column has NA values

Alternativement, si nous essayons de convertir le type de colonne après avoir lu le fichier CSV, nous obtenons :

df= pd.read_csv("data.csv")
df[['id']] = df[['id']].astype(int)
error: Cannot convert NA to integer

Solution :

À partir de la version 0.24 de Pandas, il est possible de représenter des données entières avec des valeurs manquantes en utilisant Nullable Integer Types de données, implémentés avec IntegerArray. Pour utiliser cette fonctionnalité :

  1. Importez la classe IntegerArray depuis Pandas.
from pandas.arrays import IntegerArray
  1. Créez un objet IntegerArray avec le type souhaité, dans ce cas, Int64 .
arr = pd.array([1, 2, np.nan], dtype=pd.Int64Dtype())
  1. Convertir le 'id' vers un IntegerArray à l'aide de astype().
df['id'] = df['id'].astype('Int64')

En utilisant des types de données entiers nuls, Pandas peut gérer les colonnes entières avec des valeurs manquantes tout en conservant leur type de données prévu.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn