当前我有以下代码:
averages = []
for i, row in amount_before_avg.iterrows():
datetime = row['datetimes_actual']
datetime_plus_week = row['datetimes_actual'] + one_week
datetime_plus_twoweek = row['datetimes_actual'] + two_weeks
datetime_min_week = row['datetimes_actual'] - one_week
datetime_min_twoweek = row['datetimes_actual'] - two_weeks
try:
total = (int(row['Amount']))+
int(df.loc[df['datetimes_actual'] == datetime_plus_week, 'Amount'])+
int(df.loc[df['datetimes_actual'] == datetime_plus_twoweek, 'Amount'])+
int(df.loc[df['datetimes_actual'] == datetime_min_week, 'Amount'])+
int(df.loc[df['datetimes_actual'] == datetime_min_twoweek, 'Amount']))
except:
total = 5
averages.append(total/5)
您可能会看到,我正在尝试创建一个滚动平均值列表,将数据框中每个日期时间点的金额平均值加上接下来的2周和前2周。现在很奇怪的是,由于某种原因,当我在接下来的几周中使用它时,它会检索数据。但是,当我用前两周的时间时,它不会选择任何数据。这不是因为滚动平均值的缘故,因为它也出现在数据帧的中间。
以下是打印语句的一些输出以显示问题:
datetime -> 2017-09-04 20:00:00
datetime_plus_week -> 2017-09-11 20:00:00
datetime_plus_twoweek -> 2017-09-18 20:00:00
datetime_min_week -> 2017-08-28 20:00:00
datetime_min_twoweek -> 2017-08-21 20:00:00
corresponding amount for datetime_plus_week -> 4
corresponding amount for datetime_plus_twoweek -> 6
在前两个对应的数量之后,该函数停止。我确定每个数据点都有一个对应的日期时间(边缘处除外),并且我开始觉得这很奇怪,因为要遍历列表。
有人知道这样的问题吗?还是有人在我的代码中发现明显的错误?如果可以,我很想知道!
预先感谢:)