我有一列包含 datetime64[ns] 值。因此,在 pandas 的某些单元格中,当它为空时,其值为 NaN。我想运行以下函数,但遇到错误。
错误如下:ValueError: 无法将 float NaN 转换为整数
这是我的功能:
def excel_date2(date1):
temp = datetime(1899, 12, 30)
delta = date1 - temp
return int(delta.days)
这是我在项目中调用它的位置:
df['endedAtInteger'] = df['endedAt'].apply(excel_date2)
以下是该列具有的值的示例:
NaN
2018-09-02 15:20:15
2018-09-02 18:04:34
2018-09-02 18:11:15
2018-09-02 18:39:34
但是,我不想永久更改该列的值类型,因此无论您建议什么,请对另一列执行此操作。如果可能的话,我不想删除这些值。
最佳答案
我认为在这里转换为整数是没有必要的,如果缺少值,所有数据都会转换为 float :
def excel_date2(date1):
temp = datetime(1899, 12, 30)
delta = date1 - temp
return delta.days
但如果需要,可以使用 Nullable integer data type :
df['endedAtInteger'] = df['endedAt'].apply(excel_date2).astype('Int64')
关于python - 错误如下: ValueError: cannot convert float NaN to integer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59155658/