我正在 Pandas 中尋找一種方法來計算時間序列中特定值的連續出現次數。
假設我正在執行一個實驗,我拋硬幣并得到正面或反面(1 或 0)。我將我的結果記錄在一個 Pandas 系列中,我想看看我有多少個實體(一個計數),有兩個連續的頭部,三個連續的頭部,四個連續的頭部,等等。此外,我希望它是滾動計數,這意味著形式(尾部,正面,正面,正面,反面)的序列將回傳成對出現的兩個正面實體的計數,以及一個三個頭系列。
是否有一種自然的方法可以使用 Series/DataFrame 中的方法來做到這一點?我可以用一些 for 回圈來做到這一點,但我擔心這樣做的成本。
謝謝。
編輯:請求的輸入/輸出。
輸入:
a = pd.DataFrame({'coin' : [0,1,1,1,0]})
print(a.summary_of_windows())
輸出:
{1: 3
2: 2,
3: 1}
輸出可能是一個字典:鍵 1 表示出現了正面,其中三個發生了。鍵 2 表示成對的順序頭(其中有兩個),鍵 3 表示長度為 3 的頭序列(發生一次)。
uj5u.com熱心網友回復:
您可以使用DataFrame.rolling:
>>> df
coin
0 0
1 1
2 1
3 1
4 0
# Compute how many sequences of two heads there are:
>>> df['coin'].rolling(2).sum().eq(2).sum()
2
# Do it for three sequences:
# remember to change v AND v
>>> df['coin'].rolling(3).sum().eq(3).sum()
1
# Find total number of heads occurences:
>>> df['coin'].sum()
3
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/383045.html
