【问题标题】:pandas: efficiently adding the values of two (time) seriespandas:有效地将两个(时间)序列的值相加
【发布时间】:2021-11-24 00:32:21
【问题描述】:

我有两个(比玩具示例大)系列,例如:

s1 = pd.read_json('{"count":{"1614470400000":4,"1617148800000":0,"1619740800000":0,"1622419200000":4,"1625011200000":4,"1627689600000":5,"1630368000000":0,"1632960000000":8,"1635638400000":2}}')['count']
s2 = pd.read_json('{"count":{"1625011200000":1}}')['count']

添加它们的有效方法是什么? 我可以想象创建一个连接,然后添加忽略 nans,但我认为这应该比一些合并排序它们的操作慢?

这是玩具示例的预期结果:

【问题讨论】:

    标签: python pandas time-series


    【解决方案1】:

    使用参数fill_value=0

    尝试Series.add(...)
    out = s1.add(s2,fill_value=0)
                count
    2019-06-30    1.0
    2021-02-28    4.0
    2021-03-31    0.0
    2021-04-30    0.0
    2021-05-31    4.0
    2021-06-30    4.0
    2021-07-31    5.0
    2021-08-31    0.0
    2021-09-30    8.0
    2021-10-31    2.0
    

    【讨论】:

    • 这比我的示例更清晰,并且如果日期在系列中相似,则会正确汇总值,正如我在帖子中指出的那样。这应该是被接受的答案。
    • Thnx,还没有看到系列给你添加开箱即用,我试过 s1+s2 但这给了 nans。我仍然想知道是否有人可以计时它与优化的合并排序,但由于它是库的一部分,它现在对我来说非常好!
    【解决方案2】:

    以下有效,但我真的不知道您如何将 2019 年 6 月 30 日和 2021 年 6 月 30 日加在一起得到 5。我必须将 2019 年更改为 2021 年才能使其有效。

    s3 = pd.concat([s1,s2])
    s3.groupby(level=0).sum()
    

    【讨论】:

    • 糟糕!这就是使用 python 和电子表格产生结果的区别;)
    猜你喜欢
    • 2021-07-31
    • 2018-06-14
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-05
    • 2011-09-22
    • 2017-08-27
    相关资源
    最近更新 更多