使用python样式更改数据帧中行的背景颜色
我有这样一个数据帧:使用python样式更改数据帧中行的背景颜色,python,pandas,styling,Python,Pandas,Styling,我有这样一个数据帧: name color parking_space 0 Terminal 1, 2 Green Lot 40 1 Terminal 4 Blue Lot 81 2 Terminal 5 Yellow Lot 59 3 Terminal 7 Orange Lot 45 4 Terminal 8 Red Lot
name color parking_space
0 Terminal 1, 2 Green Lot 40
1 Terminal 4 Blue Lot 81
2 Terminal 5 Yellow Lot 59
3 Terminal 7 Orange Lot 45
4 Terminal 8 Red Lot 31
5 Long-Term Lot 55
这是使用selenium刮取的数据。我想根据停车位的值更改整行的背景颜色。
这是我尝试过的代码,但它的输出是dataframe,它是同一个旧数据库。
代码:
terminal\u name=驱动程序。通过类名称(“tp-h-mod”)查找元素
端子颜色=驱动程序。按类别名称(“端子批次”)查找元件
终端容量=驱动程序。通过类名称(“终端百分比”)查找元素
mylist=[]
mylist1=[]
mylist2=[]
列表1=[]
对于终端名称中的数据:
mylist.append(data.text)
对于端子颜色的数据:
mylist1.append(data.text)
对于终端容量中的数据:
mylist2.append(data.text)
对于范围(6)中的i:
text=mylist2[i]
m=文本分割('%')[0]
列表1.append(m)
数据帧({'name':mylist,'color':mylist1,'parking_space':list1})
def突出显示(世界其他地区):
如果int(row.parking\u space[:2])=26和int(row.parking\u space[:2])那么,一旦您用类似于int(row['parking\u space'][:2])
的方法解决了str/int比较,这看起来已经在中解决了
使用该问题的不可接受答案:
def highlight(row):
if int(row.parking_space[:2]) <= 25:
return ['background-color: green']*3
elif int(row.parking_space[:2]) >=26 and int(row.parking_space[:2]) <=50:
return ['background-color:yellow']*3
else:
return ['background-color:red']*3
df_styled
现在是一个所以,一旦你用int(row['parking_space'][:2])之类的东西解决了str/int比较问题,看起来这个问题已经解决了
使用该问题的不可接受答案:
def highlight(row):
if int(row.parking_space[:2]) <= 25:
return ['background-color: green']*3
elif int(row.parking_space[:2]) >=26 and int(row.parking_space[:2]) <=50:
return ['background-color:yellow']*3
else:
return ['background-color:red']*3
df_styled
现在是中的一个,这里有一个关于数据帧样式的完整部分。到目前为止你尝试了什么?请用代码编辑你的文章,而不是添加评论,这样更容易阅读。当您运行该代码时,输出是什么,以及它与您想要的相比如何?@G.Anderson我编辑了我的问题。当我尝试打印数据帧时,它再次给我没有格式的旧数据帧type()
列中的停车位值是什么?据我所知,您可能正在尝试对字符串值进行数字比较,例如,'30%Full'@g.Anderson Yes type()是字符串。我已经制作了另一个列表,并从parking_space(列表1)中提取了数字值。我如何在这里使用该列表1?在中,有一个关于设置数据帧样式的完整部分。到目前为止你尝试了什么?请用代码编辑你的文章,而不是添加评论,这样更容易阅读。当您运行该代码时,输出是什么,以及它与您想要的相比如何?@G.Anderson我编辑了我的问题。当我尝试打印数据帧时,它再次给我没有格式的旧数据帧type()
列中的停车位值是什么?据我所知,您可能正在尝试对字符串值进行数字比较,例如,'30%已满@g.Anderson Yes type()是字符串。我已经制作了另一个列表,并从停车场提取了数字值(列表1)。我如何使用该列表1?使用Solutiona编辑没有运气。我得到的是相同的数据帧@G。Anderson您要输出到什么环境?这在我的jupyter环境中工作,但是pandas样式器是基于HTML的,因此您可能需要额外的步骤如果您想要表格格式的原始HTML,您可以将样式器保存到一个变量中,然后在其上调用.render()
,以输出表格,正如发现的那样,您也可以使用solutionAgain Noy luck进行编辑。我得到的是相同的数据帧@G。Anderson您将输出到哪个环境?这在我的jupyter环境中可以使用,但是pandas样式器是基于HTML的,因此您可能需要额外的步骤如果您想要表格格式的原始HTML,您可以将样式器保存到一个变量中,然后对其调用.render()
,以输出表格,您也可以这样做
df_styled=df.style.apply(highlight, axis=1)
<style type="text/css" >
#T_20b96880_c80e_11e8_a82d_a0afbd198380row0_col0 {
background-color: yellow;
...