Python panas groupby并对照上一行/下一行进行检查

Python panas groupby并对照上一行/下一行进行检查,python,pandas,group-by,pandas-groupby,row,Python,Pandas,Group By,Pandas Groupby,Row,我将某些数据分配到年份中,有时由于时间原因,它落在错误的年份,需要手动更正数据。(长话短说)请参见下面的示例,这样更容易理解: import pandas as pd years=[2000,2001,2002,2003,2004,2005,2000,2001,2002,2003,2004,2005] symbols=['ABC','ABC','ABC','ABC','ABC','ABC', 'DEF','DEF','DEF', 'DEF','DEF','DEF'] c=[3, 3, 2, 4

我将某些数据分配到年份中,有时由于时间原因,它落在错误的年份,需要手动更正数据。(长话短说)请参见下面的示例,这样更容易理解:

import pandas as pd

years=[2000,2001,2002,2003,2004,2005,2000,2001,2002,2003,2004,2005]
symbols=['ABC','ABC','ABC','ABC','ABC','ABC', 'DEF','DEF','DEF', 'DEF','DEF','DEF']
c=[3, 3, 2, 4, 3, 3, 3, 3, 4, 2, 3, 3]
df= pd.DataFrame({'y':years, 'g':symbols, 'count':c})

           y    g  count
    0   2000  ABC      3
    1   2001  ABC      3
    2   2002  ABC      2
    3   2003  ABC      4
    4   2004  ABC      3
    5   2005  ABC      3
    6   2000  DEF      3
    7   2001  DEF      3
    8   2002  DEF      4
    9   2003  DEF      2
    10  2004  DEF      3
    11  2005  DEF      3
我希望我的输出像这样 (这意味着我想将2003年的第一次ABC观察转移到2002年,将2002年的最后一次DEF观察转移到2003年)


我不知道如何编写代码来比较每一行与前一行和下一行,同时按……分组。

我找到了如何按groupby()执行我想执行的操作。shift()


模式不清楚…如果上一行.C<当前行.C和下一行.C>当前行.C,那么做点什么…还没有清理。。。。
           y    g  count result
0   2000  ABC      3
1   2001  ABC      3
2   2002  ABC      2
3   2003  ABC      4   2002
4   2004  ABC      3
5   2005  ABC      3
6   2000  DEF      3
7   2001  DEF      3
8   2002  DEF      4   2003
9   2003  DEF      2
10  2004  DEF      3
11  2005  DEF      3
df['prev']=df.groupby(['g'])['count'].shift(1)
 df['next']=df.groupby(['g'])['count'].shift(-1)