Pandas提取datetime列年份返回float类型问题求助
解决Pandas提取datetime年份返回float类型的问题
嘿,作为Pandas新手碰到这个问题太正常啦!我当初刚用的时候也踩过这个坑😉。出现float类型的核心原因是你的Joined_date列里大概率存在缺失值(NaN)——因为标准的int类型没法存储缺失值,Pandas就自动把年份转换成了float类型来兼容。
下面给你几个实用的解决办法,按需选择:
方法1:直接转换为整数(无缺失值时用)
如果确认Joined_date列没有缺失值,直接用astype(int)转成整数类型就行:
fifa['Joined_year'] = fifa['Joined_date'].dt.year.astype(int)
执行后你就能得到全是1970的整数列啦。
方法2:支持缺失值的整数类型(有缺失值时用)
如果列里存在缺失值,用Pandas的Nullable Integer类型(Int64,注意是大写的I),它既能存储整数,又能兼容NaN:
fifa['Joined_year'] = fifa['Joined_date'].dt.year.astype('Int64')
这样缺失值会显示为pd.NA,而不会破坏整数类型的结构。
方法3:填充缺失值后转类型
如果想把缺失值替换成某个具体值(比如0或者某个默认年份),可以先用fillna填充,再转整数:
# 比如把缺失值填充为0,再转int fifa['Joined_year'] = fifa['Joined_date'].dt.year.fillna(0).astype(int)
你可以先检查下Joined_date列有没有缺失值,验证一下我的说法:
print(fifa['Joined_date'].isna().sum())
如果输出大于0,就说明确实有缺失值导致了float类型的出现~
内容的提问来源于stack exchange,提问作者VVS
相关产品推荐
相关产品推荐

