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?

En lieu et place de NaN, quelle est la valeur qui sera stockée dans int_measure de la colonne?

OriginalL'auteur user1718097 | 2016-03-08