Pandas列计算不符合预期:Season列生成逻辑失效排查
问题原因及解决方法
你的代码条件未生效的核心原因是Month列的数据类型与你用于比较的"1"类型不匹配,导致判断条件永远为False,因此只会执行else分支填充Year列的值。
具体修正方案
根据Month列的实际类型选择对应代码:
1. 如果Month列是数值类型(int/float)
直接用数值1进行比较:
df["season"] = np.where(df["Month"] == 1, df["Year"] - 1, df["Year"])
2. 如果Month列是字符串类型且值为带前导零的格式(如"01")
用匹配的字符串"01"进行比较:
df["season"] = np.where(df["Month"] == "01", df["Year"] - 1, df["Year"])
验证方法
可以先执行以下代码确认Month列的类型和唯一值,快速定位问题:
# 查看Month列的数据类型 print(df["Month"].dtype) # 查看Month列的所有唯一值 print(df["Month"].unique())
内容的提问来源于stack exchange,提问作者Abartel
相关产品推荐
相关产品推荐

