【问题标题】:If index duplicated then add column value to sum如果索引重复,则将列值添加到总和
【发布时间】:2017-05-07 12:53:03
【问题描述】:

pandas DF 具有日期时间索引以及该价格的价格和数量。

                  Last      Volume
Date_Time                      
20160907 070000  1.1249         17
20160907 070001  1.1248         12
20160907 070001  1.1249         15
20160907 070002  1.1248         13
20160907 070002  1.1249         20

如果价格重复,我想创建一个列来保持整个序列的成交量总和。我正在尝试创建一个看起来像这样的列。

Last              Volume                 VolumeCount
1.1249                17                     17
1.1248                12                     12
1.1249                15                     32
1.1248                13                     25
1.1249                20                     52

我一直在研究不同的函数和循环,但我似乎无法创建一个不是该组总和的列。我真的很感激任何帮助或建议。谢谢。

【问题讨论】:

  • 试试DF['VolumeCount'] = DF.groupby('Last')['Volume'].cumsum()
  • 我认为只有当价格与之前的价格相同时,您才想要这样做。在您的示例中,每个单独的价格都会累积交易量。 @Abdou 与您的预期输出相符,但与您实际所说的相符。
  • 非常感谢!我不敢相信我把事情弄得这么复杂。谢谢!!

标签: python-2.7 pandas numpy


【解决方案1】:

试试:

DF['VolumeCount'] = DF.groupby('Last')['Volume'].cumsum()

我希望这会有所帮助。

【讨论】:

    【解决方案2】:

    您希望在相同Last 的连续集合上累积音量

    考虑df

                     Last      Volume  
    Date_Time         
    20160907-70000  1.1249         17
    20160907-70001  1.1248         12
    20160907-70001  1.1248         15
    20160907-70002  1.1248         13
    20160907-70002  1.1249         20
    

    然后

    df.Volume.groupby((df.Last != df.Last.shift()).cumsum()).cumsum()
    
    Date_Time
    20160907-70000    17
    20160907-70001    12
    20160907-70001    27
    20160907-70002    40
    20160907-70002    20
    Name: Volume, dtype: int64
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 2021-12-07
      • 2015-10-26
      相关资源
      最近更新 更多