gpt4 book ai didi

python - 向后求和给定天数范围内的值差异 - Pandas

转载 作者:行者123 更新时间:2023-11-30 22:28:52 25 4
gpt4 key购买 nike

我在 pandas 数据框中创建了一个天差列,并且我希望添加一个列,该列具有给定天窗口内特定值的总和

请注意,如果需要,我可以为每行提供一个日期列,但差异是根据数据第一天的天数差异创建的。

示例

df = pd.DataFrame.from_dict({'diff': [0,0,1,2,2,2,2,10,11,15,18],
'value': [10,11,15,2,5,7,8,9,23,14,15]})
df
Out[12]:
diff value
0 0 10
1 0 11
2 1 15
3 2 2
4 2 5
5 2 7
6 2 8
7 10 9
8 11 23
9 15 14
10 18 15

我想添加 5_days_back_sum 列,对过去 5 天(包括同一天)进行求和,因此结果如下

Out[15]: 
5_days_back_sum diff value
0 21 0 10
1 21 0 11
2 36 1 15
3 58 2 2
4 58 2 5
5 58 2 7
6 58 2 8
7 9 10 9
8 32 11 23
9 46 15 14
10 29 18 15

我怎样才能实现这一目标?最初我有一个日期列来创建差异列,如果这有助于其可用

最佳答案

使用 boolean indexing 的自定义函数使用 sum 过滤范围:

def f(x):
return df.loc[(df['diff'] >= x - 5) & (df['diff'] <= x), 'value'].sum()

df['5_days_back_sum'] = df['diff'].apply(f)
print (df)
diff value 5_days_back_sum
0 0 10 21
1 0 11 21
2 1 15 36
3 2 2 58
4 2 5 58
5 2 7 58
6 2 8 58
7 10 9 9
8 11 23 32
9 15 14 46
10 18 15 29

between 类似的解决方案:

def f(x):
return df.loc[df['diff'].between(x - 5, x), 'value'].sum()

df['5_days_back_sum'] = df['diff'].apply(f)
print (df)
diff value 5_days_back_sum
0 0 10 21
1 0 11 21
2 1 15 36
3 2 2 58
4 2 5 58
5 2 7 58
6 2 8 58
7 10 9 9
8 11 23 32
9 15 14 46
10 18 15 29

关于python - 向后求和给定天数范围内的值差异 - Pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46510668/

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