根据日期之间计算总和或平均值

时间:2021-01-14 17:28:46

标签: python

我有一个代码,我想计算两个日期之间的总和或平均值。

Pandas DataFrame 中的示例数据:

data = {'Dates':['2022-12-22','2021-01-01','2021-01-05','2021-01-07','2021-01-10','2021-01-13'],
        'Value':['4','3','6','5','4','3']}

我想遍历所有日期,而不仅仅是列中的日期,因此从开始日期到结束日期,然后从所有日期减去例如 14 天得到平均值或总和。

所以我在如何最好地构建这个方面有点卡住了,我想找出一种聪明而简洁的计算方法。我有两个想法,第一个感觉更丑更重,但我不确定方法二是否可行。你们有什么想法吗? (我在那里写的代码不正确,只是为了说明)

方法一:

date_start = 2020-12-20
date_stop = today() 
date_range = date_stop - date_start
for i in dates:
    if between this date and - 14 in data then sum Values

或者方法二:

date_start = 2020-12-20
date_stop = today() 
date_range = date_stop - date_start
for i in dates:
    df.Value.ewm(span=14, adjust=False).mean()

编辑:

太棒了!干杯,这就像一个魅力。

这是我想出来的:

input_data = pd.read_csv('data/df_random_hours.csv')
df = pd.DataFrame(input_data)
input_data = pd.read_csv('data/names.csv')
df2 = pd.DataFrame(input_data)
days = 365
date_start = datetime(2020, 1, 1)
date_stop = datetime(2021, 1, 1)

#date, NameID, Name, FDPsum_14
date_diff = (date_stop - date_start)
date_diff = date_diff.days
df['Start'] = pd.to_datetime(df['Start'])
print(df)
x = 0

df_sum = df.groupby(['NameID'])['FDP'].sum()
print(df_sum)

for x in range(0, len(df_sum)):
    for i in range(0, date_diff):
        if df_sum['NameID'][x] =
            date_now = (date_start + timedelta(days=i))
            date_old = (date_now - timedelta(days=14))
            sum = df[df['Start'].between(date_old,date_now)]['FDP'].sum()

我的下一个挑战是它也被 name 或 nameid 划分,这样循环是行不通的,因为它不会告诉 sum 函数它只会查看 nameid = nameid...

我可能会做一个新的临时 df,在那里我将所有相同的 nameId 存储在一起,但同样,这感觉必须是一些更简单、更干净的方法来做到这一点。

这是 df

           Unnamed: 0          Name  ...                 Stop       FDP
0               0   Jadyn Estes  ...  2020-01-01 14:20:00  7.333333
1               1   Jadyn Estes  ...  2020-01-02 11:10:00  4.166667
2               2   Jadyn Estes  ...  2020-01-03 13:40:00  6.000000
3               3   Jadyn Estes  ...  2020-01-04 14:20:00  3.333333
4               4   Jadyn Estes  ...  2020-01-05 17:20:00  3.333333
...           ...           ...  ...                  ...       ...
14795       14795  Ellie Dawson  ...  2020-12-25 20:30:00  8.000000
14796       14796  Ellie Dawson  ...  2020-12-26 19:10:00  6.333333
14797       14797  Ellie Dawson  ...  2020-12-27 15:40:00  3.666667
14798       14798  Ellie Dawson  ...  2020-12-30 13:30:00  3.500000
14799       14799  Ellie Dawson  ...  2020-12-31 23:50:00  8.833333

0 个答案:

没有答案