考慮以下資料框
df = pd.DataFrame()
df['Amount'] = [13,17,31,48]
我想為每一行計算“金額”列的前 2 個值的標準差。例如:
- 對于第三行,值應該是 17 和 13(即 2)的標準差。
- 對于第四行,值應該是 31 和 17(即 7)的標準值。
這就是我所做的:
df['std previous 2 weeks'] = df['Amount'].shift(1).rolling(2).std()
但這不起作用。我認為我的問題是索引問題。但這與 sum 方法完美配合。
df['total amount of previous 2 weeks'] = df['Amount'].shift(1).rolling(2).sum()
PD:我知道這可以通過其他方式完成,但我想知道這不起作用的原因(以及如何解決它)。
uj5u.com熱心網友回復:
你可以shift之后rolling.std。此外,默認情況下自由度為 1,您似乎希望它為 0。
df['Stdev'] = df['Amount'].rolling(2).std(ddof=0).shift()
輸出:
Amount Stdev
0 13 NaN
1 17 NaN
2 31 2.0
3 48 7.0
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/449863.html
上一篇:集合框架(Set集合練習)
