面板数据 - 保留至少 3 年数据的公司 Pandas

Panel data - Keep companies which have at least 3 years of data in Pandas

我正在处理与财务相关价值的 df 大型面板数据,其中我有许多公司(及其基本价值)多年来。 df 看起来像这样:

        year     ticker     return_y
0       1985      VLID       -0.5838
1       1985        KO        0.3245
2       1994       CTL       -0.3063
3       1996      DRYR       -0.1607
..       ...       ...           ...
1356    2002      CHUX       -0.2456
1357    1987       HRL       -0.0233
1358    2015        KO        0.2343
..       ...       ...           ...
56798   2017      AFMXF       0.0558
56799   2014        TER       0.0134

我知道有些公司只有一两年的报告,我担心他们会在我的分析中造成一些偏差。因此,我只想保留那些至少有 3 年的公司 - 谁能帮我找到办法做到这一点?

提前致谢!

也许还有一条更短的路。我的尝试; 假设每个组有一年,我将创建一个新列,通过将 groupby 链接到 cumcount

从 1 开始对每个组进行编号
df['group']=df.groupby(['ticker']).cumcount()+1
df2=df[df['group']>=3]
df2

找出每组中的最大值,并丢弃最大值小于 3 的所有值

df['group']=df.groupby(['ticker']).cumcount()+1
df['Max']=df.groupby('ticker')['group'].transform('max')
df[df['Max']>=3]

您可以在一行中解决这个问题:使用 lambda 调用 groupby.filter()

df.groupby(df.ticker).filter(lambda x: len(x) > 2)