微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在两个日期之间总结 Pandas 的最后 7 天

如何解决如何在两个日期之间总结 Pandas 的最后 7 天

这是我的原始数据

Raw Data

这是我在 Pandas 中的“Date_2wks_Ago”列上添加后的数据(包括类型)

enter image description here

我想添加一个新列“Rainfall_Last7Days”,用于计算上周每一天的总降雨量。

所以(忽略其他不相关的列)它看起来有点像这样......

Ideal Dataset

有人知道如何在 Pandas 中做到这一点吗?

我的数据大约有 1000 个观察值,所以不是很大。

解决方法

我认为您正在寻找的是 rolling() 函数。

本节重新创建了一个简化版的表格

 import pandas as pd
    import numpy as np
    
    # Create df

rainfall_from_9am=[4.6,0.4,3.6,3.5,3.2,5.5,2.2,1.3,0.04,0.4]

date=['2019-02-03','2019-02-04','2019-02-05','2019-02-06','2019-02-07','2019-02-08','2019-02-09','2019-02-10','2019-02-11','2019-02-12','2019-02-13','2019-02-14','2019-02-15','2019-02-16','2019-02-17','2019-02-18'
        ]

# Create df from list
df=pd.DataFrame({'rainfall_from_9am':rainfall_from_9am,'date':date
                })

这部分计算当前和之前 6 条记录的降雨量滚动总和。

df['rain_last7days']=df['rainfall_from_9am'].rolling(7).sum()

print(df)
          

输出:

          date  rainfall_from_9am  rain_last7days
0   2019-02-03               4.60             NaN
1   2019-02-04               0.40             NaN
2   2019-02-05               3.60             NaN
3   2019-02-06               3.50             NaN
4   2019-02-07               3.20             NaN
5   2019-02-08               5.50             NaN
6   2019-02-09               2.20           23.00
7   2019-02-10               1.30           19.70
8   2019-02-11               0.00           19.30
9   2019-02-12               0.00           15.70
10  2019-02-13               0.04           12.24
11  2019-02-14               0.00            9.04
12  2019-02-15               0.00            3.54
13  2019-02-16               0.00            1.34
14  2019-02-17               0.04            0.08
15  2019-02-18               0.40            0.48

意识到此输出与原始问题中的示例不完全匹配。你能帮忙验证一下你所追求的正确逻辑吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。