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

Stratascratch项目代码报错:TypeError问题排查与修复求助

问题分析与修复方案

报错根源

  1. 数值列类型错误:sale_amount、prev_day_sale_amount、difference_btw_prev_day列是字符串类型,无法进行数值比较运算,导致出现'>=' not supported between instances of 'str' and 'int'错误。
  2. idxmax参数误用:axis="columns"表示按行查找最大值索引,而我们需要的是difference_btw_prev_day列的最大值对应的行日期索引,应该使用默认的axis=0(可省略)。

修复步骤

1. 转换数值列类型为数值型

将相关字符串列转换为整数或浮点数,确保能进行数值运算:

import pandas as pd

# 转换为数值类型,无法转换的内容设为NaN(可选)
daily_sales_df['sale_amount'] = pd.to_numeric(daily_sales_df['sale_amount'], errors='coerce').astype(int)
daily_sales_df['prev_day_sale_amount'] = pd.to_numeric(daily_sales_df['prev_day_sale_amount'], errors='coerce')
daily_sales_df['difference_btw_prev_day'] = pd.to_numeric(daily_sales_df['difference_btw_prev_day'], errors='coerce')

如果确认列中没有非数字字符,也可以直接用astype:

daily_sales_df['sale_amount'] = daily_sales_df['sale_amount'].astype(int)
daily_sales_df['prev_day_sale_amount'] = daily_sales_df['prev_day_sale_amount'].astype(float)
daily_sales_df['difference_btw_prev_day'] = daily_sales_df['difference_btw_prev_day'].astype(float)

2. 修正idxmax调用逻辑

去掉错误的axis参数,获取最大差值对应的日期及行数据:

# 获取最大差值对应的日期
max_change_date = daily_sales_df['difference_btw_prev_day'].idxmax()
print(max_change_date)  # 输出:2013-04-29 00:00:00

# 获取对应的行数据
target_row = daily_sales_df.loc[max_change_date]
print(target_row)

输出结果会符合预期:

sale_day                2013-04-29
sale_amount                   732
prev_day_sale_amount        458.0
difference_btw_prev_day     274.0
Name: 2013-04-29 00:00:00, dtype: object

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 05:38:31