使用Python Pandas对csv文件中的行进行排序

时间:2013-07-25 23:29:01

标签: python csv pandas

我有一个关于使用Pandas对csv文件中的行进行排序的快速问题。我拥有的csv文件具有如下数据:

quarter week    Value
  5       1      200   
  3       2      100
  2       1       50
  2       2      125
  4       2      175 
  2       3      195 
  3       1      10
  5       2      190

我需要按照以下方式排序:对季度和相应的周数进行排序。因此输出应如下所示:

quarter week    Value
  2       1      50  
  2       2      125
  2       3      195
  3       1      10
  3       2      100    
  4       2      175
  5       1      200
  5       2      190

我的尝试:

df = df.sort('quarter', 'week') 

但这不会产生正确的结果。任何帮助/建议?

谢谢!

3 个答案:

答案 0 :(得分:3)

  

注意sort已被弃用,而不是sort_values,您应该在Pandas 0.17 +中使用。

键入help(df.sort)会给出:

sort(self, columns=None, column=None, axis=0, ascending=True, inplace=False) method of pandas.core.frame.DataFrame instance
    Sort DataFrame either by labels (along either axis) or by the values in
    column(s)

    Parameters
    ----------
    columns : object
        Column name(s) in frame. Accepts a column name or a list or tuple
        for a nested sort.

[...]

Examples
--------
>>> result = df.sort(['A', 'B'], ascending=[1, 0])

[...]

因此您将要排序的列作为列表传递:

>>> df
   quarter  week  Value
0        5     1    200
1        3     2    100
2        2     1     50
3        2     2    125
4        4     2    175
5        2     3    195
6        3     1     10
7        5     2    190
>>> df.sort(["quarter", "week"])
   quarter  week  Value
2        2     1     50
3        2     2    125
5        2     3    195
6        3     1     10
1        3     2    100
4        4     2    175
0        5     1    200
7        5     2    190

答案 1 :(得分:0)

DataFrame对象没有属性sort

答案 2 :(得分:0)

新答案,截至2019年3月14日

df.sort_values(by=["COLUMN"], ascending=False)

这将返回一个新排序的数据框,而不更新原始数据框。

注意:您可以根据需要更改升序参数,而无需将其传递,它将默认为ascending=True