|
发表于 2023-8-10 16:27:37
|
显示全部楼层
在你的代码中,循环变量 j 的取值范围是从1到12,但是你的数据集中的月份可能不是连续的。因此,当 j 的值超过数据集中存在的最大月份时,循环不会停止,而是继续增加,直到达到12。这就导致了 j 的值变得很大,比如1745。
为了解决这个问题,你可以通过获取数据集中的最大月份来设置循环变量 j 的取值范围。你可以使用 df['月'].max() 来获取最大月份,然后将其作为 range() 函数的参数。
修改后的代码如下:
- import pandas as pd
- import numpy as np
- pd.set_option('display.unicode.east_asian_width', True)
- df = pd.DataFrame(pd.read_csv('2022_APMCM_C_Data.csv', encoding='gb18030'))
- df = df.fillna(0)
- nianbot = df["年"].min()
- niantop = df["年"].max()
- temper = []
- for i in range(nianbot, niantop + 1):
- for j in range(1, df['月'].max() + 1):
- position = (df["AverageTemperature"] != 0).tolist() and (df["年"] == i).tolist() and (df["月"] == j).tolist()
- temper.append(np.mean(df["AverageTemperature"][position]))
- print(i, j)
- temper = pd.DataFrame({"平均温度": np.array(temper)})
- temper.to_excel("平均温度.xlsx")
复制代码
通过这种方式,循环变量 j 将根据数据集中的最大月份进行循环,避免了超出范围的问题。 |
|