Je peux tronquer
des flottants individuels en utilisant la fonction tronquer
dans math
. Mais en essayant de transmettre la même fonction à une colonne pandas
df
, j'obtiens une erreur.
df['X'] = math.trunc(1000 * df['X']) / 1000; TypeError: type Series doesn't define __trunc__ method
Mais lorsque vous utilisez un pandas df
:
d = ({ 'X' : [1.1234,1.1235], }) df = pd.DataFrame(data=d) df['X'] = math.trunc(1000 * df['X']) / 1000;
Erreur:
import math import pandas as pd X = 1.1236 X = math.trunc(1000 * X) / 1000; #Output 1.123
3 Réponses :
Vous pouvez utiliser applymap
trunc = lambda x: math.trunc(1000 * x) / 1000; df.applymap(trunc)
Bonne réponse @Anthony Kong
Essayez de remplacer df ['X'] = math.trunc (1000 * df ['X']) / 1000;
par df ['X'] = [math.trunc (1000 * val) / 1000 pour val dans df ['X']]
. J'espère que ça aide
Je pense que le moyen le plus simple d'y parvenir serait d'utiliser .astype (int)
Dans votre exemple, ce serait:
df[x] = ((df[x]*1000).astype(int).astype(float))/1000
Pourquoi utiliseriez-vous truncate et non df.round?
Comparaison avec d'autres chiffres avec n décimales. 1,123 milliard, c'est une grande différence par rapport à 1,124 milliard