当前位置: 首页 > 知识库问答 >
问题:

如何用前几年相同时间帧的权重替换特定时间帧的值?

司徒钱青
2023-03-14

我有一个数据框,它有4年的数据,看起来像这样:

我想做的是将2021年的值替换为同一时间框架中前3年值的权重。所以在这个例子中,只将2021年第1周到第3周的值替换为:45%*2020 30%*2019 25%*2018

这将为我们提供2021年的以下信息:

我们得到了2021周3的值:0.4532×0.330×0.25×26=14.4 9 6.5=29.9

此外,我希望能够跳过几年,如果我想,2021可以基于2020, 2019,和2016,例如。

共有1个答案

淳于博文
2023-03-14

您可以创建自定义函数,因为听起来您需要可自定义的参数。没有一种特定的熊猫方法可以做到这一点:

def f(df=df, years=[], weeks=[], weights=[], current_year=2021):
    df = df[df['Week'].isin(weeks)]
    series_weights = df['Year'].map({year : weight for year, weight in zip(years, weights)})
    df['Value'] = df['Value'] * series_weights
    df = df.assign(Year=current_year).groupby(['Year', 'Week'], as_index=False)['Value'].sum()
    return df


f(years=[2018,2019,2020], weeks=[1,2,3], weights=[0.25,0.3,0.45])

Out[1]: 
   Year  Week  Value
0  2021     1  25.60
1  2021     2  32.05
2  2021     3  29.90
 类似资料:
  • 问题内容: 我有一个带有列()的表,格式为日期时间,在我的Select中有一个年份()的变量输入,格式为int。 如何使用变量输入替换表中日期中的年份,并以datetime格式(在Select中)返回结果? 我尝试了以下操作,但是返回错误的日期/年份: 例子: 在这种情况下,我的结果应该是: 问题答案: 使用DATEADD函数的解决方案: 这是一个比当前年份小的年份的示例:

  • 我使用以下代码创建了以下: 但循环什么也不做。我感觉这与变量赋值有关。但我想不出另一种办法来完成这件事。 我试着在每次循环迭代之后分配一个变量,考虑到我在这篇文章中看到的答案。

  • 用其他dataframe的列值替换dataframe的一列中的nan值时出现问题。下面是一个测试示例: 我想用其他dataframe中的特定值替换列名中的Nan值(如果其中有一些Nan值,则不是其他列),例如此dataframe中的Name2值: 我想得到的是: 这是此示例的测试代码: 然后我尝试了这三种方法,但都不起作用——我的数据帧始终保持Nan值。 你能告诉我哪里出错了吗?

  • 问题内容: 我有一个这样的dataFrame,我想每60分钟进行一次分组,然后从06:30开始分组。 我在用: 我得到这个分组: 但我正在寻找这个结果: 我如何告诉该功能以6小时30分开始以一小时为间隔进行分组? 如果 .groupby(pd.TimeGrouper(freq =‘60Min’)) 无法完成此 操作 ,最好的方法是怎么做? 致敬并非常感谢 问题答案: 使用会同中的参数。 指定将使时

  • 我想用树莓派实时捕捉带有时间戳的视频帧。视频由USB摄像头使用python代码中的ffmpeg()函数制作。如何保存当前由USB摄像头在树莓派中制作的视频帧? 我尝试使用opencv的三个函数。cv2。VideoCapture可检测视频,保存帧。以下是代码,为简洁起见,未提及包含的库。 该代码保存了以前由网络摄像头制作的视频帧。它不保存当前由网络摄像头录制的视频帧。