我是熊猫新手,正在尝试转换我的一些SAS代码。我有两个数据集,第一个(header_mf)包含由crsp_fundno和caldt(基金id和日期)索引的共同基金信息。在第二个数据集(ret_mf)中,我有具有相同指数的基金收益(mret列)。我试图将第一个数据集中的每个条目与前12个月的收益合并。在SAS,我可以这样做:
proc sql;
create table temp_mf3 as
select a.*, b.mret from header_mf as a,
ret_mf as b where
a.crsp_fundno=b.crsp_fundno and
((year(a.caldt)=year(b.caldt) and month(a.caldt)>month(b.caldt) ) or
(year(a.caldt)=(year(b.caldt)+1) and month(a.caldt)<=month(b.caldt) ));
quit;
在Python中,我尝试将crsp_fundno上的两个数据帧连接起来,希望在下一步中排除超出范围的观测。但是,结果很快变得太大,无法处理,内存也用完了(我使用了超过15年的数据)。在
有没有一种有效的方法可以在Pandas中进行这样的条件合并?在
抱歉,如果这个回复来得太晚了。我不认为你想要有条件的合并(至少在我正确理解情况的情况下)。我认为只要在
['fundno','caldt']
上合并header_mf和ret mf,然后使用pandas中的shift
操作符创建过去返回的列,就可以得到想要的结果。在所以我认为你的数据基本上如下所示:
显然,头文件中可能有很多变量(除了我自己编的
^{pr2}$foo
变量)。但是,如果这基本上捕获了数据的性质,那么我认为您可以在['fundno','caldt']
上合并,然后使用shift
:现在可以创建过去的返回变量。因为我创建了一个如此小的示例面板,所以我只做过去3个月的回报:
如果我误解了你的数据,我很抱歉。在
相关问题 更多 >
编程相关推荐