Python 将数据帧数据类型从float64转换为int64

Python 将数据帧数据类型从float64转换为int64,python,pandas,dataframe,oracle11g,apache-spark-sql,Python,Pandas,Dataframe,Oracle11g,Apache Spark Sql,我试图使用python读取CSV文件,在结果数据框中,一列作为float64数据类型而不是int64返回。但我可以看到大多数值都是数字,在现有的CSV文件中,其中一些是空值 df = pd.read_csv(file) dh.head(3) Name State Id SFO CA 123.0 JFK NY 152.0 CHG IL NaN ABC AZ NaN df.dypes Name Object State Object Id float

我试图使用python读取CSV文件,在结果数据框中,一列作为float64数据类型而不是int64返回。但我可以看到大多数值都是数字,在现有的CSV文件中,其中一些是空值

df = pd.read_csv(file)

dh.head(3)

Name State  Id
SFO  CA     123.0
JFK  NY     152.0
CHG  IL     NaN
ABC  AZ     NaN

df.dypes

Name Object
State Object
Id float64
我尝试将Id列转换为Int64以将数据上载到oracle表中

df['Id'] = df['Id'].astype('int64')
错误:无法将NA转换为整数


有没有办法将Id列转换为int64?感谢您的回复。

Python 3.7.6熊猫1.0.3中,您可以执行以下操作:

df['Id'] = df['Id'].astype(pd.Int64Dtype())

print(df.dtypes)
print(df)
输出:

Name     object
State    object
Id        Int64

State    Id
0  SFO    CA   123
1  JFK    NY   152
2  CHG    IL  <NA>
3  ABC    AZ  <NA>
Name对象
状态对象
Id Int64
州Id
0 SFO CA 123
1纽约肯尼迪机场152
2 CHG IL
3 ABC AZ

请提供一个,以及整个错误消息。这是否回答了您的问题?我已经尝试过了,但没有成功。它给出的错误是AttributeError:Module'pandas'没有属性'pd.Int64Dtype()'您的python和pandas版本是什么?python-3.6和pandas-0.19。2@Naresh我在回答中添加了Python和pandas版本。祝你好运@Naresh您-至少-必须升级到pandas 0.24.2才能工作