En arrondissant les valeurs dans les Pandas dataframe colonne avec NaNs
J'ai une Pandas dataframe qui contient une colonne de float64 valeurs:
tempDF = pd.DataFrame({ 'id': [12,12,12,12,45,45,45,51,51,51,51,51,51,76,76,76,91,91,91,91],
'measure': [3.2,4.2,6.8,5.6,3.1,4.8,8.8,3.0,1.9,2.1,2.4,3.5,4.2,5.2,4.3,3.6,5.2,7.1,6.5,7.3]})
Je veux créer une nouvelle colonne contenant uniquement la partie entière. Ma première pensée a été pour l'utiliser .astype(int):
tempDF['int_measure'] = tempDF['measure'].astype(int)
Cela fonctionne bien mais, comme une complication supplémentaire, la colonne j'ai contient une valeur manquante:
tempDF.ix[10,'measure'] = np.nan
Cette valeur manquante provoque l' .astype(int) méthode échoue avec:
ValueError: Cannot convert NA to integer
J'ai pensé que je pourrais arrondir les flotteurs dans la colonne de données. Cependant, l' .round(0) de la fonction arrondit à l'entier le plus proche (supérieur ou inférieur), plutôt que d'arrondi vers le bas. Je ne peux pas trouver une fonction équivalente ".floor()" qui va agir sur une colonne de Pandas dataframe.
Des suggestions?
NaN
, quelle est la valeur qui sera stockée dans int_measure
de la colonne?OriginalL'auteur user1718097 | 2016-03-08
Vous devez vous connecter pour publier un commentaire.
Vous pouvez simplement appliquer
numpy.floor
;Bonjour, je sais que c'est un vieux thread, mais j'ai couru dans un problème où je suis en train de faire la même chose, mais avec le plafond de la fonction. Je suis en train d'arrondir à l'entier le plus proche pour une Pandas dataframe. Je l'ai fait: df['miles'].appliquer(np.ceil) Et il retourne: AttributeError: 'numpy.ndarray' objet n'a pas d'attribut 'ceil'
Pour info, si quelqu'un tombe sur ma question avec un problème similaire... Le problème est que j'avais certaines valeurs NaN dans ma série. Je les ai converti en utilisant des np.nan_to_num et il a fixé.
OriginalL'auteur Joachim Isaksson
Vous pouvez également essayer:
À l'aide de
np.floor
est plus rapide, cependant.OriginalL'auteur Alexander