首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫以最有效的方式在两个日期之间求和?

熊猫以最有效的方式在两个日期之间求和?
EN

Stack Overflow用户
提问于 2022-03-25 12:06:34
回答 1查看 321关注 0票数 0

我有一个数据集,它显示每周报告的产量,另一个数据显示每小时报告一次的产量。现在,我想以最有效的方式将所有这些小时副生产的总和与每周报告的价值相提并论。我怎样才能做到这一点?我想不惜一切代价避免for循环,因为我的数据集非常大。

所以我的数据看起来如下:

每周报告的数据:

代码语言:javascript
复制
Datetime_text             | Total_Production_A
--------------------------|--------------------
2014-12-08 00:00:00.000   | 8277000
2014-12-15 00:00:00.000   | 8055000
2014-12-22 00:00:00.000   | 7774000

小时数据:

代码语言:javascript
复制
Datetime_text             | A_Prod_1  | A_Prod_2  | A_Prod_3  | ......    | A_Prod_N  |
--------------------------|-----------|-----------|-----------|-----------|-----------|
2014-12-06 23:00:00.000   |     454   |       9   |      54   |     104   |       4   | 
2014-12-07 00:00:00.000   |       0   |     NaV   |       0   |      23   |       3   | 
2014-12-07 01:00:00.000   |      54   |       0   |       4   |     NaV   |      20   |

诸若此类。我想要一个新的表格,其中每周报告数据和每小时报告数据之间的差异是为每周报告数据的所有日期计算的。所以就像这样:

代码语言:javascript
复制
Datetime_text             | Diff_Production_A
--------------------------|------------------
2014-12-08 00:00:00.000   |                10
2014-12-15 00:00:00.000   |              -100
2014-12-22 00:00:00.000   |              1350

如果Diff_Production_A = Total_Production_A - sum(A_Prod_1,A_Prod_2,A_Prod_3,.,A_Prod_N;over每周的所有日期),我如何才能最好地实现这一点?

这方面的任何帮助都是非常有用的:

最佳fidu13

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-25 13:49:11

将日期时间存储为pd.Timestamp,然后可以对日期进行各种操作。

对于您的问题,它们是按周(从周一开始)对每小时数据进行分组,然后将其与每周数据合并,并计算差异:

代码语言:javascript
复制
weekly["Datetime"] = pd.to_datetime(weekly["Datetime_Text"])

hourly["Datetime"] = pd.to_datetime(hourly["Datetime_Text"])
hourly["HourlyTotal"] = hourly.loc[:, "A_Prod_1":"A_Prod_N"].sum(axis=1)

result = (
    hourly.groupby(pd.Grouper(key="Datetime", freq="W-MON"))["HourlyTotal"]
    .sum()
    .to_frame()
    .merge(
        weekly[["Datetime", "Total_Production_A"]],
        how="outer",
        left_index=True,
        right_on="Datetime",
    )
    .assign(Diff=lambda x: x["Total_Production_A"] - x["HourlyTotal"])
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71616727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档