Как изменить тип колонки float в int?

Хочу преобразовать в int колонки в DataFrame, но на выходе как были float, так и остались:

df = pandas.DataFrame(mongo_docs)
datas = df.astype({'account':'int','binance_id':'int'},errors='ignore')

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

Автор решения: Sky

Можешь просто залочить 1 колонку и присвоить ей тип данных используй библиотеку пандас

Например.

import pandas as pd
df = pandas.DataFrame(mongo_docs)
df["имя столбца"] = pd.to_numeric(df["имя столбца"])

если несколько столбцов то

df[["account", "binance_id"]] = df[["account", "binance_id"]].apply(pd.to_numeric)

если у вас есть NaN то просто их уберите с помощью

df2 = df[pd.notnull(df['Имя столбца в котором есть NAN'])]

А потом уже делайте его целым

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

Можно воспользоваться относительно новым типом данных Int64 (первая буква - большая):

In [122]: df = pd.DataFrame({"a": [1, np.nan, 3]})

In [123]: df
Out[123]:
     a
0  1.0
1  NaN
2  3.0

In [124]: df.dtypes
Out[124]:
a    float64
dtype: object

In [125]: df = df.astype({"a": "Int64"})

In [126]: df.dtypes
Out[126]:
a    Int64
dtype: object

In [127]: df
Out[127]:
      a
0     1
1  <NA>
2     3
→ Ссылка
Автор решения: strawdog

Если в вашем датафрейме нет явных чисел с ненулевой дробной частью (не считая nan), например:

     a
0  1.0
1  2.0
2  3.0
3  NaN
4  4.0
5  5.0

то в pandas версии выше (если не ошибаюсь) 1.2.2, можно сделать простое приведение вида:

df = df.convert_dtypes()

тогда получите:

      a
0     1
1     2
2     3
3  <NA>
4     4
5     5
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 6 entries, 0 to 5
Data columns (total 1 columns):
 #   Column  Non-Null Count  Dtype
---  ------  --------------  -----
 0   a       5 non-null      Int64
dtypes: Int64(1)
→ Ссылка