Python 将包含NaN的64列转换为包含整数的对象列
正如标题所说,我有一个Pandas数据帧,它包含一个表示整数的Python 将包含NaN的64列转换为包含整数的对象列,python,pandas,dataframe,Python,Pandas,Dataframe,正如标题所说,我有一个Pandas数据帧,它包含一个表示整数的float64。我想将其转换为使用int64,但它也包含NaN值。因此,我所能做的最好的事情就是将其转换为have typeobject,将所有非NaN值转换为整数。在不手动迭代列的情况下执行此操作的最佳方法是什么 这是必需的,因此当我使用将数据帧转换为_sql时,将使用可为空的整数类型而不是float 例如: >>> df a b 0 1 2.0 1 3 NaN 我想要的是: >>
float64
。我想将其转换为使用int64
,但它也包含NaN
值。因此,我所能做的最好的事情就是将其转换为have typeobject
,将所有非NaN
值转换为整数。在不手动迭代列的情况下执行此操作的最佳方法是什么
这是必需的,因此当我使用将数据帧转换为_sql
时,将使用可为空的整数类型而不是float
例如:
>>> df
a b
0 1 2.0
1 3 NaN
我想要的是:
>>> df
a b
0 1 2
1 3 NaN
尝试使用
。应用
演示:
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
输出:
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
是否尝试过?df.astype(object)df[“b”]。astype(“int64”)
将导致ValueError:无法将非有限值(NA或inf)转换为整数
。我可以转换为“object”
,但我不知道如何从那里开始,而不手动迭代每个值,检查它是否等于NaN
,并有条件地强制转换它。