Python 将数据帧数据类型从float64转换为int64
我试图使用python读取CSV文件,在结果数据框中,一列作为float64数据类型而不是int64返回。但我可以看到大多数值都是数字,在现有的CSV文件中,其中一些是空值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
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才能工作