我有一列具有datetime64 [ns]值的列。因此,在大熊猫的某些细胞中,空白时其值为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
但是,我不想永久更改该列的值类型,因此在您建议的任何情况下都请将该列更改为另一列。而且我不想删除这些值。
答案 0 :(得分:1)
我认为这里没有必要转换为整数,如果缺少值,则将所有数据都转换为浮点数:
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')