Panel data保留至少有3年数据的公司

2024-06-11 02:23:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在与一个金融相关价值的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年时间的公司——有人能帮我找到一种方法吗

提前谢谢你


Tags: 数据面板dfreturn公司year金融ko
2条回答

也许还有一条更短的路。我的尝试; 假设每个组有一年,我将创建一个新列,通过将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)

相关问题 更多 >