Как убрать нули после запятой в определенных столбцах (float64 -> int)?

Мой код:

df_CG1=pd.read_csv('payments_CG1.csv' ,sep=';')
pd.set_option('display.max_rows', None)
df_CG1=df_CG1.dropna(how= 'all')
df_CG1

датафрейм

Подскажите пожалуйста, как столбцам: user_id, revenue, и payment_service_id присвоить "целые" значения, чтобы выглядило красиво.


Ответы (2 шт):

Автор решения: CrazyElf
df_CG1['user_id'] = df_CG1['user_id'].astype(int)

Остальные столбцы так же.

→ Ссылка
Автор решения: MaxU

Возможно вы получаете тип данных float64, потому, что в некоторых строках у вас встречаются NaN значения, а целые типы в Numpy не понимают NaN и поэтому Pandas автоматически конвертирует такие столбцы в тип данных float64.

В современных версиях Pandas ввели новый тип данных "Int64" (с большой буквы), который понимает значения NaN.

Пример:

In [13]: df = pd.DataFrame([[1, 2, 3], [np.nan, 3, np.nan]], columns=list("abc"))

In [14]: df
Out[14]:
     a  b    c
0  1.0  2  3.0
1  NaN  3  NaN

In [17]: cols = df.columns[df.dtypes.eq("float64")]

In [18]: df[cols] = df[cols].astype(int)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
...
ValueError: Cannot convert non-finite values (NA or inf) to integer
...

решение:

In [19]: df[cols] = df[cols].astype("Int64")

In [20]: df
Out[20]:
      a  b     c
0     1  2     3
1  <NA>  3  <NA>

In [21]: df.dtypes
Out[21]:
a    Int64
b    int64
c    Int64
dtype: object
→ Ссылка