【问题标题】:Reverse cumulative sum until condition is met in a dataframe反转累积和,直到在数据帧中满足条件
【发布时间】:2021-03-31 16:29:21
【问题描述】:

我有以下数据框:

frame=pd.DataFrame(columns=["a","b"], data=[(2,5),(2,6),(1,8),(1,1),(3,5),(3,2),(3,3)])

看起来像这样:

    a   b
0   2   5
1   2   6
2   1   8
3   1   1
4   3   5
5   3   2
6   3   3

我想对“b”列进行反向累积总和,直到满足条件 - “a”列是相同的数字 - 在这个特定示例中 - 3. 所需的输出是 10

【问题讨论】:

  • 你能给出整列的输出吗,不完全清楚应该是什么
  • 所需的输出不是按列的。我只想从后到前对“b”列中的数字求和,并继续这样做,直到“a”列中的数字相同。这意味着根据示例,所需的输出是数字 10。
  • 你的意思是虽然列a中的数字是相同的,而不是直到,对吧?
  • @IsmaelELATIFI - 完全正确
  • 条件是a == b还是a的值相同?

标签: python pandas cumulative-sum


【解决方案1】:

根据你的逻辑:

 blocks = frame['a'].ne(frame['a'].shift()).cumsum()

 frame.loc[blocks==blocks.iloc[-1], 'b'].sum()
 # 10

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多