Как сказано в названии, у меня есть фрейм данных Pandas, содержащий float64, представляющий целые числа. Я хотел бы преобразовать его для использования int64, но он также содержит значения NaN. Таким образом, лучшее, что я могу сделать, это преобразовать его в тип object, преобразовав все значения, не относящиеся к NaN, в целые числа. Как лучше всего это сделать, не перебирая столбец вручную?
Это необходимо для того, чтобы при преобразовании фрейма данных с помощью to_sql вместо float использовался целочисленный тип, допускающий значение NULL.
Например:
>>> df
a b
0 1 2.0
1 3 NaN
Что бы я хотел:
>>> df
a b
0 1 2
1 3 NaN
df.astype (объект)
df["b"].astype("int64") приведет к ValueError: Cannot convert non-finite values (NA or inf) to integer. Я мог преобразовать в "object", но я не был уверен, как действовать дальше, не перебирая вручную каждое значение, проверяя, равно ли оно NaN, и не применяя его условно.






Попробуйте использовать .apply
Демо:
import pandas as pd
import numpy as np
df = pd.DataFrame({"s": [2.0, np.nan]})
print(df["s"].apply(lambda x: x if np.isnan(x) else np.int64(x)))
Выход:
0 2
1 NaN
Name: s, dtype: float64
Вы пробовали тип?