2016-07-13 47 views
0

我目前正在嘗試創建IF語句以將某個類元素應用於某些單元格,以便我可以使用CSS對其進行樣式設置。我目前無法使用熊貓給出的樣式選項,因爲我正在使用.to_html函數。熊貓Dataframe if語句使用應用錯誤

我的表格如下。 { '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

我想你需要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 
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