2016-08-07 51 views
1

Ich habe folgende Datenrahmen, df:Pandas Datenrahmen Art auf Spalte wirft KeyError auf Index

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 

Ich versuche, diese zu sortieren, indem snr:

df.sort_values(df.snr) 

aber dies wirft

_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' 

Ich setze keinen expliziten Index für diesen DataFrame, er kommt von einer Lis t Verständnis:

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) 

Antwort

4

Das by Schlüsselwort sort_values erwartet Spaltennamen, nicht die tatsächliche Serie selbst. Also, Sie würden wollen:

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 
+0

getan in einem, danke. – gvoysey