我有一个数据框,其中包含一个月的每一天,以及每一天每 10 分钟的时间:
Date Time Temp
0 31/05/2006 09:00 9.3
1 31/05/2006 09:10 10.1
2 31/05/2006 09:20 10.7
我试图获取 Max(Temp) 的时间 (hh:mm),因此我使用函数 argmax
来计算 Max(Temp) 的索引
maxTime = data.iloc[data[data['日期'] == '31/05/2006']['室外温度'].argmax()]['时间']
很好,但现在我需要计算该月的每一天,因此我将其放入循环中。首先,我创建了 MaxTempTime 列表来保存循环结果:
MaxTempTime = []
for i in data['Date']:
maxTime = data.iloc[data[data['Date'] == i ]['Outside Temperature'].argmax()]['Time']
MaxTempTime.extend(maxTime)
print maxTime
但是我每天都会得到多次答案,我只需要一次,然后继续下一个日期
(有10分钟的周期,每天1440分钟内有144个10分钟的周期,所以我每天得到144个相同的答案)
有人可以帮我解决这个问题吗?谢谢!
最佳答案
您可以在最初的尝试中添加以下轻微修改:
MaxTempTime = []
for i in data['Date'].unique():
maxTime = data.iloc[data[data['Date'] == i ]['Outside Temperature'].argmax()]['Time']
MaxTempTime.append(maxTime)
这样,您就可以迭代 DataFrame 中的所有日期,但每一天仅迭代一次。尽管使用 groupby()
可能有更快的方法,但无需对代码进行太多更改即可完成工作,如果您的 DataFrame 很大,这可能会成为一个问题。
顺便说一句,您应该使用 append()
而不是 extend()
将元素添加到列表中。在这种情况下使用extend()将时间字符串分割成单个字符并将每个字符作为其自己的元素附加。请参阅here了解这两种方法之间的差异。
关于python - 在 for 循环中重复回答,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44938315/