我有一个大型面板数据框,其中包含多个日期的多个资产。问题是有些资产并不是每天都有价值的,所以我只希望将当天的空白值替换为该资产的最后可用值。在
例如:
tradeDate assetId ticker Sedol price
0 2016-01-04 00:00:00.000 1786 3900 B17N9P6 1
1 2016-01-04 00:00:00.000 2041 1898 B1JNK84 2
2 2016-01-04 00:00:00.000 2981 CBMG B9F9PM1 3
3 2016-01-04 00:00:00.000 3547 MWA B15RZR4 4
4 2016-01-04 00:00:00.000 3570 TPLM B065Y40 5
5 2016-01-05 00:00:00.000 3995 MHGC B0YRYS2 1
6 2016-01-05 00:00:00.000 4110 DSW B0BV2V6 2
7 2016-01-05 00:00:00.000 4874 NWE B03PGL4 3
8 2016-01-05 00:00:00.000 4982 BOFI B0637D4 4
9 2016-01-05 00:00:00.000 5082 ISCTR B03MYS8 5
10 2016-01-05 00:00:00.000 5083 KCHOL B03MVJ8 6
所以我需要做的是索引tradeDate和assetId,然后重新编制索引,以便它为每个tradeDate创建新行,这样总有相同数量的assetId。这将使用nan创建行。我被这一步弄糊涂了,因为我不确定在使用多个索引时以及当列tradeDate和assetId不完全匹配时的语法。在
最后,我要用最后一个可用值替换nan。但是,我必须再次为tradeDate和assetId的两个索引执行此操作。感谢你的帮助
你问题的第一部分被托马格巧妙地回答了here。在
基本上,您需要使用一个聪明的技巧,包括设置多重索引、拆散数据帧、填充缺失的值并再次堆叠。然后,您应该再次将填充的缺失值转换为NaNs,并使用在pandas中实现的
.fillna()
方法,用最后一个可用值替换NaNs。在首先,让我们生成所需的数据:
然后解决问题:
^{pr2}$希望这个答案能涵盖你的问题,否则请告诉我们。在
相关问题 更多 >
编程相关推荐