按升序对pandas DataMatrix进行排序

时间:2011-04-05 21:13:51

标签: python sorting numpy pandas

pandas DataFrame对象有sort method但pandas DataMatrix对象没有。

按索引(日期列)按升序对此DataMatrix对象进行排序的最佳方法是什么?

>>> dm
               compound_ret
2/16/2011 0:00  0.006275682
2/15/2011 0:00  0.003098208
2/14/2011 0:00  0.0055039
2/13/2011 0:00  0.011471506
2/12/2011 0:00  0.011853712
2/11/2011 0:00  0.009558739
2/10/2011 0:00  0.014127912
2/9/2011 0:00   0.02042923
2/8/2011 0:00   0.023308062

结果应该是DataMatrix,其中第一个条目为2/8/2011,最后一个条目为2/16/2011。 compound_ret列中的条目应遵循排序中的日期。所以结果应该是这样的:

>>>dm_sorted
                  compound_ret
2/8/2011 0:00    0.023308062
2/9/2011 0:00    0.02042923
2/10/2011 0:00  0.014127912
2/11/2011 0:00  0.009558739
2/12/2011 0:00  0.011853712
2/13/2011 0:00  0.011471506
2/14/2011 0:00  0.0055039
2/15/2011 0:00  0.003098208
2/16/2011 0:00  0.006275682

2 个答案:

答案 0 :(得分:8)

确实在0.2到0.3之间,我将sortUp / sortDown重命名为单sort个方法。对不起。

如果可以的话,我绝对建议你继续保持熊猫的前沿(https://github.com/wesm/pandas)!另外,考虑将IPython用于所有交互式工作(http://ipython.scipy.org) - 我发现对象的完成和对对象的简单反省有助于查找方法和探索文档字符串。

答案 1 :(得分:0)

你尝试过吗?至少在我尝试过的pandas版本中,DataMatrix继承自DataFrame

>>> type(dm)
<class 'pandas.core.matrix.DataMatrix'>
>>> dm.sort()
                       compound_ret    
2011-02-08 00:00:00   -0.6986         
2011-02-09 00:00:00    0.1846         
2011-02-10 00:00:00    0.2312         
2011-02-11 00:00:00    1.844          
2011-02-12 00:00:00    0.3662         
2011-02-13 00:00:00    0.1331         
2011-02-14 00:00:00    0.5166         
2011-02-15 00:00:00    1.37           
2011-02-16 00:00:00    0.9346         

>>> dm.sort(ascending=False)                                                    
                       compound_ret    
2011-02-16 00:00:00    0.9346         
2011-02-15 00:00:00    1.37           
2011-02-14 00:00:00    0.5166         
2011-02-13 00:00:00    0.1331         
2011-02-12 00:00:00    0.3662         
2011-02-11 00:00:00    1.844          
2011-02-10 00:00:00    0.2312         
2011-02-09 00:00:00    0.1846         
2011-02-08 00:00:00   -0.6986