为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Pandas Style 我得到 KeyError: "None of ....

使用 Pandas Style 我得到 KeyError: "None of ....

皈依舞 2022-06-28 17:33:15
我使用构建数据框    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_obc0   KLAX  ROUTINE  2019-10-14 00:53  1:00  260  10 -9999     VFR  10.0     9999     9999       None   -99991   KLAX  ROUTINE  2019-10-14 01:53  1:00  240   9 -9999     VFR  10.0     9999     9999       None   -99992   KLAX  ROUTINE  2019-10-14 02:53  1:00  260   6 -9999     VFR  10.0     9999     9999       None   -99993   KLAX  ROUTINE  2019-10-14 03:53  1:00  250   5 -9999     VFR  10.0     9999     9999       None   -99994   KLAX  ROUTINE  2019-10-14 04:53  1:00  240   4 -9999     VFR  10.0     9999     9999       None   -99995   KLAX  ROUTINE  2019-10-14 05:53  1:00  250   5 -9999     VFR  10.0     9999     9999       None   -9999这是对象和 int64 的组合。我已经使用代码* pd.to_html *构建了一个 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]"我查了一个类似的问题,但我无法弄清楚这个问题。我有一种感觉,这可能是我正在使用的代码的语法。这是类似的问题。
查看完整描述

1 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

您应该只传递子集变量中的列名。此外,您的函数应该返回一个与您的列长度相同的列表。


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'])


查看完整回答
反对 回复 2022-06-28
  • 1 回答
  • 0 关注
  • 364 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号