我试图从数据类型 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
的 type
是 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
s 转换值是有问题的:
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,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43956335/