列上的pandas dataframe sort会在索引上引发keyerror

gvo*_*sey 4 python syntax pandas

我有以下数据框df:

   peaklatency        snr
0        52.99        0.0
1        54.15  62.000000
2        54.12  82.000000
3        54.64  52.000000
4        54.57  42.000000
5        54.13  72.000000
Run Code Online (Sandbox Code Playgroud)

我试图通过以下方式对此进行排序snr:

df.sort_values(df.snr)
Run Code Online (Sandbox Code Playgroud)

但这提高了

_convert_to_indexer(self, obj, axis, is_setter)
   1208                 mask = check == -1
   1209                 if mask.any():
-> 1210                     raise KeyError('%s not in index' % objarr[mask])
   1211 
   1212                 return _values_from_object(indexer)

KeyError: '[ inf  62.  82.  52.  42.  72.] not in index'
Run Code Online (Sandbox Code Playgroud)

我没有明确地在这个DataFrame上设置索引,它来自列表理解:

    import pandas as pd
    d = []
    for run in runs:
        d.append({            
            'snr': run.periphery.snr.snr,
            'peaklatency': (run.brainstem.wave5.wave5.argmax() / 100e3) * 1e3
        })
    df = pd.DataFrame(d)
Run Code Online (Sandbox Code Playgroud)

chr*_*isb 8

期望列名的by关键字sort_values,而不是实际的系列本身.所以,你想要:

In [23]: df.sort_values('snr')
Out[23]: 
   peaklatency   snr
0        52.99   0.0
4        54.57  42.0
3        54.64  52.0
1        54.15  62.0
5        54.13  72.0
2        54.12  82.0
Run Code Online (Sandbox Code Playgroud)