目標
- 我想根據下面的周資料獲得 vol 的累積和,我參考了這個 [post][1] 但它根據周而不是一天回傳資料幀。
東風:
df = pd.DataFrame({'ts_code': ['A', 'A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B'],
'date': ['2021/1/11', '2021/1/12', '2021/1/13', '2021/1/14', '2021/1/17', '2021/1/18',
'2021/1/11', '2021/1/12', '2021/1/13', '2021/1/14', '2021/1/17', '2021/1/18'],
'vol': [10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10]})
看起來像:
ts_code date vol
A 2021/1/11 10
A 2021/1/12 10
A 2021/1/13 10
A 2021/1/14 10
A 2021/1/17 10
A 2021/1/18 10
B 2021/1/11 10
B 2021/1/12 10
B 2021/1/13 10
B 2021/1/14 10
B 2021/1/17 10
B 2021/1/18 10
預期的
ts_code date vol week_vol
A 2021/1/11 10 10
A 2021/1/12 10 20
A 2021/1/13 10 30
A 2021/1/14 10 40
A 2021/1/17 10 10
A 2021/1/18 10 20
B 2021/1/11 10 10
B 2021/1/12 10 20
B 2021/1/13 10 30
B 2021/1/14 10 40
B 2021/1/17 10 10
B 2021/1/18 10 20
注意
- 日期是交易日期,范圍是周一到周五。至少從Money開始。[1]: Pandas 每周按日期分組
uj5u.com熱心網友回復:
您可以groupby在'ts_code'列上創建一個物件pd.Grouper(key='date', freq='W-SAT')]并使用該cumsum方法(freq='W_SAT'因為示例資料中的作業日似乎從星期六開始):
df['week_vol'] = df.groupby(['ts_code', pd.Grouper(key='date', freq='W-SAT')]).cumsum()
輸出:
ts_code date vol week_vol
0 A 2021-01-11 10 10
1 A 2021-01-12 10 20
2 A 2021-01-13 10 30
3 A 2021-01-14 10 40
4 A 2021-01-17 10 10
5 A 2021-01-18 10 20
6 B 2021-01-11 10 10
7 B 2021-01-12 10 20
8 B 2021-01-13 10 30
9 B 2021-01-14 10 40
10 B 2021-01-17 10 10
11 B 2021-01-18 10 20
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/408934.html
標籤:
