【问题标题】:Pandas: DataFrame sorting [duplicate]Pandas:DataFrame 排序
【发布时间】:2019-04-23 01:11:21
【问题描述】:

我正在尝试使用 sort_values 方法对数据框进行排序。我有一个只有两列('TS','VALUES')的数据框(df),我总是收到以下错误:

df.columns
Out[88]: Index(['TS', 'VALUES'], dtype='object')

df.sort_values(by='TS',axis=1,ascending=True,inplace=True,kind='quicksort',na_position='last')
Traceback (most recent call last):

  File "<ipython-input-89-53f79846b56c>", line 1, in <module>
    df.sort_values(by='TS',axis=1,ascending=True,inplace=True,kind='quicksort',na_position='last')

  File "C:\Users\gianm\Anaconda3\lib\site-packages\pandas\core\frame.py", line 4421, in sort_values
    stacklevel=stacklevel)

  File "C:\Users\gianm\Anaconda3\lib\site-packages\pandas\core\generic.py", line 1382, in _get_label_or_level_values
    raise KeyError(key)

KeyError: 'TS'

python 似乎无法识别列的名称。我哪里错了?谢谢

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    问题是axis=1,它用于按索引值排序,所以需要axis=0或删除它,因为sort_values中的默认参数:

    DataFrame.sort_values(by,axis=0,ascending=True,inplace=False,kind='quicksort',na_position='last')

    df = pd.DataFrame({'TS': [40,1,4], 'a':[1,5,2], 'd':[7,8,9]}, index=list('abc'))
    print (df)
       TS  a  d
    a  40  1  7
    b   1  5  8
    c   4  2  9
    
    df.sort_values(by='TS',
                   axis=0,
                   ascending=True,
                   inplace=True,
                   kind='quicksort',
                   na_position='last') 
    
    print (df)
       TS  a  d
    b   1  5  8
    c   4  2  9
    a  40  1  7
    

    如果删除带有默认值的参数:

    df.sort_values(by='TS', inplace=True) 
    print (df)
       TS  a  d
    b   1  5  8
    c   4  2  9
    a  40  1  7
    

    df.sort_values(by='a',axis=1,ascending=True,inplace=True,kind='quicksort',na_position='last') 
    print (df)
       a  d  TS
    a  1  7  40
    b  5  8   1
    c  2  9   4
    

    【讨论】:

      【解决方案2】:

      您传递给 sort_values 的两列之一是您的索引吗?

      如果是这样,您可以使用 reset_index() 将索引转换为新列,然后按列和索引进行排序。

      data.reset_index().sort_values(['Column','Index']).set_index('Index')
      

      【讨论】:

        猜你喜欢
        • 2014-08-04
        • 2021-06-30
        • 2019-01-23
        • 1970-01-01
        • 2022-11-14
        • 1970-01-01
        • 2014-11-07
        • 2016-05-16
        • 1970-01-01
        相关资源
        最近更新 更多