df_w
date ts_code vol
0 2021/5/9 300671.SZ 194865.78
1 2021/5/9 603026.SH 148529.63
2 2021/5/16 300671.SZ 484864.38
3 2021/5/16 603026.SH 335544.74
4 2021/5/23 300671.SZ 378664.39
5 2021/5/23 603026.SH 324002.13
6 2021/5/30 300671.SZ 477692.86
7 2021/5/30 603026.SH 255070.64
8 2021/6/6 300671.SZ 552003.44
9 2021/6/6 603026.SH 512698.37
10 2021/6/13 300671.SZ 595403.53
11 2021/6/13 603026.SH 582774.23
12 2021/6/20 300671.SZ 427875.49
13 2021/6/20 603026.SH 496716.51
14 2021/6/27 300671.SZ 551570.55
15 2021/6/27 603026.SH 388483.83
16 2021/7/4 300671.SZ 736659.9
17 2021/7/4 603026.SH 502127.57
18 2021/7/11 300671.SZ 1095915.74
19 2021/7/11 603026.SH 663312.72
20 2021/7/18 300671.SZ 874362.11
21 2021/7/18 603026.SH 845797.04
22 2021/7/25 300671.SZ 607797.58
23 2021/7/25 603026.SH 470974.62
I create ma50wvol columns and want to assign l_ma50w_vol column like below, but get KeyError: 'Column not found: ma50w_vol'
df_w=df_w.assign(
ma50wvol=df_w.groupby('ts_code')['vol'].transform(lambda x: x.rolling(50,1).mean()),
l_ma50w_vol=lambda x:x.groupby('ts_code')['ma50w_vol'].shift(1),
)
It's strange that it works when using lambda if assigning columns by created columns, but if using groupby it failed. Hope to fix it.
CodePudding user response:
Kindly check your column name it should be ma50wvol
df_w = df_w.assign(
ma50wvol=df_w.groupby('ts_code')['vol'].transform(lambda x: x.rolling(50,1).mean()),
l_ma50w_vol=lambda x:x.groupby('ts_code')['ma50wvol'].shift(1)
)
