【发布时间】:2017-10-29 20:23:14
【问题描述】:
我有一个包含销售数据的数据框
Order ID Order Date Order Priority Order Quantity Sales
928.0 1/1/2009 High 32.0 180.36
10369.0 1/2/2009 Low 43.0 4,083.19
10144.0 1/2/2009 Critical 16.0 137.63
32323.0 1/1/2009 Not Specified 9.0 872.48
48353.0 1/2/2009 Critical 3.0 124.81
51008.0 1/3/2009 Critical 15.0 85.56
26756.0 1/2/2009 Critical 43.0 614.8
18144.0 1/2/2009 Low 4.0 1,239.06
22912.0 1/2/2009 Low 32.0 4,902.38
...
我想按日期(从旧到新)和销售额(从大到小)对值进行排序。我在 PyCharm Edu 3.5.1 (python 2.7) 中编写了这段代码:
df = pd.read_csv('sales.csv', header=0)
df['Order Date'] = pd.to_datetime(df['Order Date'])
df = df.sort_values(by=['Order Date', 'Sales'], ascending=[True, False])
print df.head(10)
输出:
Order ID Order Date Order Priority Order Quantity Sales
32323.0 2009-01-01 Not Specified 9.0 872.48
928.0 2009-01-01 High 32.0 180.36
26756.0 2009-01-02 Critical 43.0 614.8
22912.0 2009-01-02 Low 32.0 4,902.38
10369.0 2009-01-02 Low 43.0 4,083.19
10144.0 2009-01-02 Critical 16.0 137.63
48353.0 2009-01-02 Critical 3.0 124.81
18144.0 2009-01-02 Low 4.0 1,239.06
29376.0 2009-01-03 Not Specified 4.0 896.49
...
“订单日期”列已正确排序,但“销售”列未按预期排序。 PyCharm 似乎忽略了 1000 分隔符的 , 值。我在这里错过了什么吗?
【问题讨论】:
-
似乎需要
df = pd.read_csv('sales.csv', header=0, thousands=',')将列Sales转换为floats。
标签: python-2.7 sorting pandas dataframe