You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

提取Timestamp月份时报错“integer argument expected, got float”求解决方案

问题解决:提取月份格式日期时的"integer argument expected, got float"错误

错误原因

你使用pd.to_datetime(data['Timestamp'], errors='coerce')时,转换失败的行被强制转为NaT(时间类型缺失值)。当自定义函数get_month处理NaT时,x.year和x.month会返回浮点型的NaN,而dt.datetime()要求传入整数参数,因此触发该错误。

解决方案

方案1:修复自定义函数,处理缺失值

在函数中先判断输入是否为NaT,避免无效参数传入:

import datetime as dt 
import pandas as pd

def get_month(x):
    if pd.isna(x):
        return pd.NaT  # 保留缺失值,也可根据需求返回其他默认值
    return dt.datetime(x.year, x.month, 1)

data['get_Timestamp'] = data['Timestamp'].apply(get_month)

方案2:使用Pandas内置高效方法(推荐)

Pandas提供了更简洁的时间处理API,无需自定义函数,还能自动处理NaT:

方法A:周期转时间戳

# 转换为月份周期后,自动取当月第一天转为日期格式
data['get_Timestamp'] = data['Timestamp'].dt.to_period('M').dt.to_timestamp()

方法B:向下取整到月份

# 将时间直接向下取整到当月第一天
data['get_Timestamp'] = data['Timestamp'].dt.floor('M')

以上两种内置方法效率远高于apply,适合处理大规模数据集。

内容的提问来源于stack exchange,提问作者PRIYANSHU

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 14:15:37