[英]sort_values function in pandas dataframe not working properly
我有一個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(date)列。
如我們所見,最后一行不是按升序排列的,而起始行是按指定順序排列的。 而且,如果我在上面的代碼中更改了FMonth列的升序屬性,則意味着數據以降序顯示在起始行中而不是最后一行中的順序。 我究竟做錯了什么? 如何在所有數據集中實現升序? 發生了什么,為什么?
您是否只需要優先考慮Month?
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.