|
5鱼币
本帖最后由 AdiosSpike 于 2023-8-10 16:31 编辑
悲伤不能附件excel
- # 导入库
- import pandas as pd
- import numpy as np
- import math
- 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,13):
- 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")
复制代码
如何我发现结果不对,如何开始debug
j居然到了1745
这是怎么了
and运算符只能用于比较两个布尔值,而不是两个列表。如果您想要得到两个列表的逻辑与,您应该使用numpy库中的logical_and函数。
例如,如果您想要得到df[“AverageTemperature”]不等于0且df[“年”]等于i且df[“月”]等于j的位置,您应该这样写:
- position = np.logical_and(np.logical_and(df[“AverageTemperature”]!=0, df[“年”]==i), df[“月”]==j)
复制代码
这样,position就是一个布尔值列表,表示每一行是否满足这三个条件。然后,您就可以用它来筛选df[“AverageTemperature”]的值,并计算平均温度。
|
最佳答案
查看完整内容
and运算符只能用于比较两个布尔值,而不是两个列表。如果您想要得到两个列表的逻辑与,您应该使用numpy库中的logical_and函数。
例如,如果您想要得到df[“AverageTemperature”]不等于0且df[“年”]等于i且df[“月”]等于j的位置,您应该这样写:
这样,position就是一个布尔值列表,表示每一行是否满足这三个条件。然后,您就可以用它来筛选df[“AverageTemperature”]的值,并计算平均温度。
|