我有以下面板数据(比示例大得多)
id clae6 anio trimestre salario empleo cpa letra
1 475230.0 2007 1 1372.440000 3.0 3150.0 G
1 475230.0 2007 2 1511.554445 3.0 3150.0 G
1 475230.0 2007 3 1477.590000 3.0 3150.0 G
1 475230.0 2007 4 2058.210000 3.0 3150.0 G
1 475230.0 2008 1 1467.678889 2.0 3150.0 G
2 475230.0 2007 1 1372.440000 3.0 3150.0 G
2 475230.0 2007 2 1511.554445 3.0 3150.0 G
2 475230.0 2007 3 1477.590000 3.0 3150.0 G
2 475230.0 2007 4 2058.210000 3.0 3150.0 G
2 475230.0 2008 1 1467.678889 2.0 3150.0 G
我想通过id执行某个功能:到目前为止,我的选项是使用groupby和apply
def entr(x):
if ((x['posicion'] ==1) & (x['fecha'] >= 228)):
return 1
elif ((x['fecha_dif'] > 8) & (x['fecha'] >= 228)):
return 1
else:
return 0
df['entrada'] = df.groupby(['id']).apply(entr,axis=1)
这个函数里面的内容与这种情况无关,关键在于我认为循环每个id或每行更快,并且创建了我创建的函数,但我不知道如何,如果有人可以帮助我非常感谢。
我认为分组和申请非常慢(我有一个2200万条记录的数据库)
非常感谢!抱歉我的英语(不是我的母语,我正在练习:))