python - 在 Pandas 中将 float64 列转换为 int64

标签 python pandas dataframe

我试图从数据类型 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) , 因为 NaNtypefloat:

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

编辑:

NaNs 转换值是有问题的:

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/

相关文章:

python - pandas 可以在不尝试将索引转换为周期的情况下绘制时间序列吗?

python - 消除 pd.read_csv 中的空格

python - 从 Pandas 上传到 S3 时如何添加标签?

python - 忽略Python中的 future 日期

r - 列出 R 中除一列之外的所有列

python - 如果它们在特定时间间隔内出现,则计算一系列值

python - 为什么 python setup.py 在 Travis CI 上说无效命令 'bdist_wheel'?

python - 按特定顺序将多个函数应用于 GroupBy 对象

python - 是否可以阻止用户单击我的 tkinter 窗口以外的其他应用程序

python - 从 pandas 数据框中提取值(value)进行数学运算的最佳方法