Используя стиль Pandas, я получаю KeyError: «Ни один из .... не находится в [столбцах] - PullRequest
1 голос
/ 18 октября 2019

Я строю фрейм данных, используя

    result = pd.concat([dmicao,dms,dmtime,dmdt,dmwd,dmws,dmwg,dmfc,dmvis,dmch,dmcl,dmwx,dmov], axis=1)#, sort=False)

    headers = ['icao','msg_type','time','dt','ddd','ff','gg','flt_cat','vis','cld_hgt','cld_type','present_wx','vis_obc']

    result.columns = headers

   icao msg_type              time    dt  ddd  ff    gg flt_cat   vis  cld_hgt cld_type present_wx vis_obc
0   KLAX  ROUTINE  2019-10-14 00:53  1:00  260  10 -9999     VFR  10.0     9999     9999       None   -9999
1   KLAX  ROUTINE  2019-10-14 01:53  1:00  240   9 -9999     VFR  10.0     9999     9999       None   -9999
2   KLAX  ROUTINE  2019-10-14 02:53  1:00  260   6 -9999     VFR  10.0     9999     9999       None   -9999
3   KLAX  ROUTINE  2019-10-14 03:53  1:00  250   5 -9999     VFR  10.0     9999     9999       None   -9999
4   KLAX  ROUTINE  2019-10-14 04:53  1:00  240   4 -9999     VFR  10.0     9999     9999       None   -9999
5   KLAX  ROUTINE  2019-10-14 05:53  1:00  250   5 -9999     VFR  10.0     9999     9999       None   -9999

Это комбинация объектов и int64. У меня нет проблем с созданием html-файла, используя код * pd.to_html *

У меня есть html-файл. Я хотел бы покрасить фон в cld_hgt в зависимости от значения

, которое я использовал

def _color_red_or_green(val):
    if val>2500: 
        color = 'red' 
    else: 
        color = 'green'
    return('color: %s' % color)

highlighted=df.style.apply(_color_red_or_green,subset=df['cld_hgt'])

with open('table.html', 'w') as f:
    f.write(highlighted.render())
    f.write(df) 

Это выдает ошибку.

KeyError: "None of [Int64Index([9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 2000, 2200,\n            2200, 2200, 9999, 2500, 2500, 2700, 2600, 3000, 9999, 9999, 9999,\n            9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999,\n       9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999,\n            9999, 9999, 9999, 9999, 9999],\n           dtype='int64')] are in the [columns]"

Я искал похожую проблему, но не могу выяснить проблему. У меня есть ощущение, что это может быть синтаксис кода, который я использую. Вот похожая проблема. KeyError: "Ни один из [['', '']] не находится в [столбцах]" pandas python

1 Ответ

1 голос
/ 18 октября 2019

Вы должны передавать только имя столбца в вашей переменной подмножества. Кроме того, ваша функция должна возвращать список такой же длины, что и ваш столбец.

def _color_red_or_green(val): 
    conditions = val > 2500
    results = [] 
    for v in conditions:
        if v:
            color = "red"
        else:
            color = "green" 
        results.append(f"color : {color}") 
    return results 

highlighted=df.style.apply(_color_red_or_green,subset=['cld_hgt'])
...