【问题标题】:pandas dataframe sort on column raises keyerror on index列上的熊猫数据框排序引发索引上的键错误
【发布时间】:2016-08-07 02:41:15
【问题描述】:

我有以下数据框,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)

【问题讨论】:

    标签: python pandas syntax


    【解决方案1】:

    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
    

    【讨论】:

    • 列没有名字怎么办?
    • 你的栏目怎么会没有名字?
    猜你喜欢
    • 2020-09-30
    • 2018-07-13
    • 2022-07-18
    • 2018-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-10
    • 2016-08-01
    相关资源
    最近更新 更多