Home > Enterprise >  get columns not found error when assigning columns using groupby method and created columns by panda
get columns not found error when assigning columns using groupby method and created columns by panda

Time:01-25

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)
)
  •  Tags:  
  • Related