[FIXED] Wie konvertiere ich Dezimalzahlen in Ganzzahlen, ohne die Dezimalstellen in Python zu runden?

Ausgabe

Ich habe einen DataFrame wie unten gezeigt, ich möchte die Dezimalzahl ohne Rundung in eine Ganzzahl konvertieren.

    Date       A      B
01-01-2022  12.87   0.67
02-01-2022  3.8976  123.98
03-01-2022  6.7654  23.98
04-01-2022  2.897   0.098
05-01-2022  3.986   0.76
06-01-2022  1.09    12.45

Gewünschte Ausgabe:

    Date    A   B
01-01-2022  12  0
02-01-2022  3   123
03-01-2022  6   23
04-01-2022  2   0
05-01-2022  3   0
06-01-2022  1   12

Lösung

Option 1

Eine Möglichkeit, dies zu tun, besteht darin, intwie folgt in den Typ umzuwandeln

df[['A', 'B']] = df[['A', 'B']].astype(int)

[Out]:

         Date   A    B
0  01-01-2022  12    0
1  02-01-2022   3  123
2  03-01-2022   6   23
3  04-01-2022   2    0
4  05-01-2022   3    0
5  06-01-2022   1   12

Option 2

Man kann es auch .applymap()wie folgt machen

df[['A', 'B']] = df[['A', 'B']].applymap(int)

[Out]:

         Date   A    B
0  01-01-2022  12    0
1  02-01-2022   3  123
2  03-01-2022   6   23
3  04-01-2022   2    0
4  05-01-2022   3    0
5  06-01-2022   1   12

Oder mit benutzerdefinierten Lambda-Funktionen

df[['A', 'B']] = df[['A', 'B']].applymap(lambda x: int(x))

[Out]:

         Date   A    B
0  01-01-2022  12    0
1  02-01-2022   3  123
2  03-01-2022   6   23
3  04-01-2022   2    0
4  05-01-2022   3    0
5  06-01-2022   1   12

Möglichkeit 3

Eine andere Möglichkeit ist die Verwendung .apply()einer benutzerdefinierten Lambda-Funktion

df[['A', 'B']] = df[['A', 'B']].apply(lambda x: x.astype(int))

[Out]:

         Date   A    B
0  01-01-2022  12    0
1  02-01-2022   3  123
2  03-01-2022   6   23
3  04-01-2022   2    0
4  05-01-2022   3    0
5  06-01-2022   1   12


Beantwortet von –
Gonçalo Peres


Antwort geprüft von –
Mildred Charles (FixError Admin)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like