我目前正在尝试创建IF语句以将类元素应用于某些单元格,因此我可以使用CSS设置它们的样式。我目前无法使用pandas提供的样式选项,因为我使用的是.to_html函数。
我的表格如下。 {'Pwer':[ - 。3,-1.3,-2.4],'趋势':[1.3,-1.3,-1.7]}
我试过
if((hist['Pwer']<0) & (hist['Trend']<0)):
hist['Pwer']=hist['Pwer'].apply(lambda x:'<span class="Negative Trend_neg">{0}</span>'.format(x))
但结果是
The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
即使我将.all()应用于hist ['Pwer']和hist ['Trend'],我也不太清楚我是否理解发生了什么。任何帮助都会很有意义。
答案 0 :(得分:2)
这样的事情会起作用:
cond = ((hist['Pwer']<0) & (hist['Trend']<0))
hist['Pwer'][cond] = hist['Pwer'][cond].apply(lambda x:'<span class="Negative Trend_neg">{0}</span>'.format(x))
输出
Pwer Trend
0 -0.3 1.3
1 <span class="Negative Trend_neg">-1.3</span> -1.3
2 <span class="Negative Trend_neg">-2.4</span> -1.7
答案 1 :(得分:0)
我认为你需要mask
:
hist = pd.DataFrame({'Pwer':[-.3,-1.3,-2.4], 'Trend':[1.3,-1.3,-1.7]} )
print (hist)
Pwer Trend
0 -0.3 1.3
1 -1.3 -1.3
2 -2.4 -1.7
hist['Pwer']=hist['Pwer'].mask((hist['Pwer']<0) & (hist['Trend']<0),
hist['Pwer'].apply(lambda x:'<span class="Negative Trend_neg">{0}</span>'.format(x)))
print (hist)
Pwer Trend
0 -0.3 1.3
1 <span class="Negative Trend_neg">-1.3</span> -1.3
2 <span class="Negative Trend_neg">-2.4</span> -1.7