在下面的資料框中,“CumRetperTrade”列是由幾個用零分隔的垂直向量(=數字序列)組成的列。(= 這些向量對應于“投資組合”列的非零元素)。我想找到“CumRetperTrade”列中包含的每個非零向量的累積區域最大值。準確地說,我想將(使用矢量化或其他方法)列“CumRetperTrade”轉換為“PeakCumRet”列(期望的結果),它為包含在“CumRetperTrade”列(所有之前的)值的累積最大值。數字示例如下。提前致謝!PS 換句話說,
import numpy as np
import pandas as pd
df1 = pd.DataFrame({"Portfolio": [1, 1, 1, 1, 0 , 0, 0, 1, 1, 1],
"CumRetperTrade": [2, 3, 2, 1, 0 , 0, 0, 4, 2, 1],
"PeakCumRet": [2, 3, 3, 3, 0 , 0, 0, 4, 4, 4]})
df1
Portfolio CumRetperTrade PeakCumRet
0 1 2 2
1 1 3 3
2 1 2 3
3 1 1 3
4 0 0 0
5 0 0 0
6 0 0 0
7 1 4 4
8 1 2 4
9 1 1 4
PPS 我之前已經問過一個類似的問題(Dataframe column: to find local maxima)并收到了對我的問題的正確答案,但是在我的問題中我沒有明確提到累積區域最大值的要求
uj5u.com熱心網友回復:
您只需要對上一個答案進行小修改:
df1["PeakCumRet"] = (
df1.groupby(df1["Portfolio"].diff().ne(0).cumsum())
["CumRetperTrade"].expanding().max()
.droplevel(0)
)
expanding().max()是產生區域最大值的原因。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/468514.html
下一篇:在qqnorm圖中添加一條直線
