+-
python – 在Pandas中将float64列转换为int64
我尝试使用以下命令将数据类型为float64的列转换为int64:

df['column name'].astype(int64)

但得到一个错误:

NameError: name ‘int64’ is not defined

该列有多少人,但格式为7500000.0,任何想法我怎么可以简单地将这个float64更改为int64?

最佳答案
pandas 0.24的解决方案,用于转换带缺失值的数字:

df = pd.DataFrame({'column name':[7500000.0,7500000.0, np.nan]})
print (df['column name'])
0    7500000.0
1    7500000.0
2          NaN
Name: column name, dtype: float64

df['column name'] = df['column name'].astype(np.int64)

ValueError: Cannot convert non-finite values (NA or inf) to integer

#http://pandas.pydata.org/pandas-docs/stable/user_guide/integer_na.html
df['column name'] = df['column name'].astype('Int64')
print (df['column name'])
0    7500000
1    7500000
2        NaN
Name: column name, dtype: Int64

我认为你需要施展到numpy.int64

df['column name'].astype(np.int64)

样品:

df = pd.DataFrame({'column name':[7500000.0,7500000.0]})
print (df['column name'])
0    7500000.0
1    7500000.0
Name: column name, dtype: float64

df['column name'] = df['column name'].astype(np.int64)
#same as
#df['column name'] = df['column name'].astype(pd.np.int64)
print (df['column name'])
0    7500000
1    7500000
Name: column name, dtype: int64

如果列中的某些NaN需要在fillna之前将它们替换为某个int(例如0),因为NaN的类型是float:

df = pd.DataFrame({'column name':[7500000.0,np.nan]})

df['column name'] = df['column name'].fillna(0).astype(np.int64)
print (df['column name'])
0    7500000
1          0
Name: column name, dtype: int64

另请查看documentation – missing data casting rules

编辑:

使用NaN转换值是错误的:

df = pd.DataFrame({'column name':[7500000.0,np.nan]})

df['column name'] = df['column name'].values.astype(np.int64)
print (df['column name'])
0                7500000
1   -9223372036854775808
Name: column name, dtype: int64
点击查看更多相关文章

转载注明原文:python – 在Pandas中将float64列转换为int64 - 乐贴网