Pandas数据框按列排序时引发索引KeyError错误

4

I have the following dataframe, 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

我将尝试按照 snr 进行排序:
df.sort_values(df.snr)

但是这引发了一个问题。
_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'

我没有在这个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)
1个回答

8
sort_values中的by关键字需要列名,而不是实际的Series本身。因此,你应该这样写:
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

如果该列没有名称怎么办? - duldi
你的列怎么可能没有名称? - Kenan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接