熊猫数据框中的sort_values函数无法正常工作

时间:2019-06-20 18:38:46

标签: python pandas time-series

我有一个1281695行和4列的数据集,其中有2013年至2019年的6年月度数据。因此,很明显在数据集中有重复的日期。我想按日期升序排列数据,例如2013年1月,2013年2月,.. 2013年12月,2014年1月,...... 2019年12月(6年的数据)。我想实现所有日期的升序数据集,但它显示某些数据的升序,其余数据的随机序。

我尝试了pandas库的sort_values。

我尝试过这样的事情:

data = df.sort_values(['SKU', 'Region', 'FMonth'], axis=0, ascending=[False, True, True]).reset_index()

其中SKU,Region和FMonth是我的自变量。 FMonth是日期变量。

并且代码排列数据的开始而不是数据的结束。就像我尝试过的一样:

data.head()

结果:

    index            SKU       Region     FMonth       sh

 0   8264  855019.133127  3975.495636 2013-01-01  67640.0

 1  20022  855019.133127  3975.495636 2013-02-01  73320.0

 2  31972  855019.133127  3975.495636 2013-03-01  86320.0

 3  43897  855019.133127  3975.495636 2013-04-01  98040.0

 4  55642  855019.133127  3975.495636 2013-05-01  73240.0

然后

data.tail()

结果:

     index       SKU      Region        FMonth       sh

 1281690     766746    0.000087    7187.170501   2017-03-01      0.0

 1281691     881816    0.000087    7187.170501   2017-09-01      0.0

 1281692     980113    0.000087    7187.170501   2018-02-01      0.0

 1281693     1020502   0.000087    7187.170501   2018-04-01      0.0

 1281694     1249130   0.000087    7187.170501   2019-03-01      0.0

其中“ sh”是我的因变量。

数据并不是很吸引人,但请仅关注FMonth(日期)列。

我们可以看到,最后一行不是按升序排列的,而起始行是按指定顺序排列的。而且,如果我在上面的代码中更改了FMonth列的升序属性,则意味着数据以降序显示在起始行中而不是最后一行中的顺序。 我究竟做错了什么?如何在所有数据集中实现升序?发生了什么,为什么?

1 个答案:

答案 0 :(得分:0)

您只需要确定月份的优先级吗?

z = pd.read_clipboard()
z.columns = [i.strip() for i in z.columns]

z.sort_values(['FMonth', 'Region', 'SKU'], axis=0, ascending=[True, True, True])


Out[23]: 
   index  SKU  Region    FMonth     sh
1  20022    8      52  1/1/2013  73320
0   8264    1      67  1/1/2013  67640
3  43897    5      34  3/1/2013  98040
2  31972    3      99  3/1/2013  86320
4  55642    4      98  5/1/2013  73240