我有一个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列的升序属性,则意味着数据以降序显示在起始行中而不是最后一行中的顺序。 我究竟做错了什么?如何在所有数据集中实现升序?发生了什么,为什么?
答案 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