python - 在 for 循环中重复回答

标签 python pandas for-loop

我有一个数据框,其中包含一个月的每一天,以及每一天每 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/

相关文章:

python - 如何将数据随机拆分为训练集和测试集?

python - Python 中的 SVD 内存错误

r - 我的向量到列的代码优化

python - 当 json_normalize 无法迭代列以展平时如何修复它?

python - Pandas 仅从 Cell 返回值

JAVA 我在方法中使用 JButton[] 数组来添加多个按钮 - 方法在类构造函数中有效,但在用作按下的按钮操作时无效

python - 如何使用 for 循环索引列表?

python - df.style.apply 在显示中居中显示多索引值

Python 递归程序对一个数进行质因数分解

python - 根据另一个数据帧的 lower_bound 和 upper_bound 删除每列的离群值