无法计算datetime列最小值:分组聚合时Timestamp与int比较报错
解决分组聚合时Timestamp与int类型比较的错误
问题核心
你虽然把Next Installment Date转成了datetime类型,但列里大概率还混有int类型的值(比如未成功转换的时间戳、无效数字),导致聚合求min时,系统尝试把Timestamp和int做比较,触发了类型不兼容的报错。
解决步骤
- 先排查列内的类型分布
执行以下代码,确认列里是不是真的全是datetime类型:
installments_df['Next Installment Date'].apply(type).value_counts()
如果输出里出现<class 'int'>,说明确实存在混合类型。
- 强制统一列类型
用pd.to_datetime重新转换,同时把无法转换的无效值转为NaT(datetime类型的缺失值):
installments_df['Next Installment Date'] = pd.to_datetime(installments_df['Next Installment Date'], errors='coerce')
之后可以查看转换后的缺失值数量,判断是否需要处理:
installments_df['Next Installment Date'].isna().sum()
如果缺失值不多,要么删除对应行,要么根据业务逻辑填充合理的日期值。
- 重新执行聚合操作
确认列类型完全统一后,再运行你的聚合代码:
installments_df.groupby(['loan_id']).aggregate({ 'amount': 'max', 'installment_number': 'max', 'Remaining_Tenor': 'sum', 'Next Installment Date': 'min' })
内容的提问来源于stack exchange,提问作者Kerolos Reda
相关产品推荐
相关产品推荐

