将包含NaN的Pandas float64列转换为包含整数的对象列

时间:2018-04-19 18:16:46

标签: python pandas dataframe

正如标题所说,我有一个Pandas数据框,其中包含float64,表示整数。我想将其转换为使用int64,但它还包含NaN个值。因此,我能做的最好的事情是将其转换为类型object,将所有非NaN值转换为整数。如果不手动迭代列,最好的方法是什么?

这是必要的,这样当我使用to_sql转换数据帧时,使用可以为空的整数类型而不是float。

例如:

>>> df
   a    b
0  1  2.0
1  3  NaN

我想要的是什么:

>>> df
   a    b
0  1    2
1  3  NaN

1 个答案:

答案 0 :(得分:0)

尝试使用.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