gpt4 book ai didi

python - 有没有一种方法可以从这个连续的周期性日期时间时间序列中更新月平均值(加权)?

转载 作者:太空宇宙 更新时间:2023-11-03 20:55:05 28 4
gpt4 key购买 nike

我有一个数据集,其中开始日期和日期没有特定的顺序。我想创建一组新的几个月列和数据的加权平均值。

del 代表否。日期范围内的天数

d 是该时间段的平均值

from datetime import datetime

my_time = datetime.min.time()

from datetime import date

df1['del'] = 0

for i in range(0,df1['start'].size):

df1['delta'][i] = (datetime.combine(df1['start'][i], my_time)-datetime.combine(df1['end'][i], my_time)).days

数据看起来像这样 -

   in       start         end   units  del  d=(units/del)
0 2017-11-12 2017-10-10 1207.0 33 36.575758
1 2017-12-12 2017-11-12 5.0 30 0.166666
2 2018-01-10 2017-12-12 8855.0 29 305.344828
3 2018-02-08 2018-01-10 3867.0 29 133.344828
4 2018-03-09 2018-02-08 922.0 29 31.793103

我希望这是我的最终输出 -

month               d_month

Nov-17 14.7
Dec-17 ....
Jan-18 ....

d_month 应该这样计算 -

假设 11 月 - (36.5757*12+0.166666*18)/30

其他月份依此类推。

最佳答案

您可以直接在数据框中使用pd.to_datetime。对于下面的数据框

import numpy as np
import pandas as pd
d = {
'Start' : ['2017-11-12', '2017-12-12', '2018-01-10', '2018-02-08', '2018-03-09'],
'End' : ['2017-10-10', '2017-11-12', '2017-12-12', '2018-01-08', '2018-02-09'],
'Units': [1207.0, 5.0, 8855.0, 3867.0, 922.0]
}
df = pd.DataFrame(d)

输出为

        Start         End   Units
0 2017-11-12 2017-10-10 1207.0
1 2017-12-12 2017-11-12 5.0
2 2018-01-10 2017-12-12 8855.0
3 2018-02-08 2018-01-08 3867.0
4 2018-03-09 2018-02-09 922.0

使用下面的代码

df['StartM'] = pd.to_datetime(df['Start'], format='%Y-%m-%d')
df['EndM'] = pd.to_datetime(df['End'], format='%Y-%m-%d')
df['Del'] = (df['StartM'] - df['EndM']) / np.timedelta64(1, 'D')
df['month'] = df['StartM'].dt.strftime('%b-%y')
df['d'] = df['Units'] / df['Del']
df['d_month'] = (df['d'] * 12 + 0.166666*18) / 30
df.drop('StartM', 1, inplace=True)
df.drop('EndM', 1, inplace=True)
df

这会产生以下输出

Start   End     Units   Del     month   d   d_month
0 2017-11-12 2017-10-10 1207.0 33.0 Nov-17 36.575758 14.730303
1 2017-12-12 2017-11-12 5.0 30.0 Dec-17 0.166667 0.166666
2 2018-01-10 2017-12-12 8855.0 29.0 Jan-18 305.344828 122.237931
3 2018-02-08 2018-01-08 3867.0 31.0 Feb-18 124.741935 49.996774
4 2018-03-09 2018-02-09 922.0 28.0 Mar-18 32.928571 13.271428

关于python - 有没有一种方法可以从这个连续的周期性日期时间时间序列中更新月平均值(加权)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56071679/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com