0

I want to paint the share price cell green if it is higher than the target price and red if it is lower than the alert price and my code is not working as it keeps popping errors.

This is the code that I use

temp_df.style.apply(lambda x: ["background: red" if v < x.iloc[:,1:] and x.iloc[:,1:] != 0 else "" for v in x], subset=['Share Price'], axis = 0)

temp_df.style.apply(lambda x: ["background: green" if v > x.iloc[:,2:] and x.iloc[:,2:] != 0 else "" for v in x], subset=['Share Price'], axis = 0)

Can anyone give me an idea on how to do it?

Index Share Price Alert/Entry   Target
0   622.0   424.0   950.0
1   6880.0  5200.0  7450.0
2   62860.0 40000.0 60000.0
3   7669.0  5500.0  8000.0
4   5295.0  3500.0  5500.0
5   227.0   165.0   250.0
6   3970.0  3200.0  4250.0
7   1300.0  850.0   1650.0
8   8480.0  6500.0  8500.0
9   11.3    0.0 0.0
10  66.0    58.0    75.0
11  7.3 6.4 9.6
12  114.8   75.0    130.0
13  172.3   90.0    0.0
14  2.6 2.4 3.2
15  76.8    68.0    85.0
16  19.6    15.4    21.0
17  21.9    11.0    18.6
18  35.4    29.0    42.0
19  12.5    9.2 0.0
20  15.5    0.0 0.0
21  449.8   0.0 0.0
22  4.3 3.6 5.0
23  47.4    40.0    55.0
24  0.6 0.5 0.6
25  49.2    45.0    72.0
26  13.9    0.0 0.0
27  3.0 2.4 4.5
28  2.4 1.8 4.2
29  54.0    0.0 0.0
30  293.5   100.0   250.0
31  190000.0    140000.0    220000.0
32  52200.0 46000.0 58000.0
33  100500.0    75000.0 115000.0
34  4.9 3.8 6.5
35  0.2 0.0 0.0
36  1430.0  980.0   1450.0
37  1585.0  0.0 0.0
38  15.6    11.0    18.0
39  3.3 2.8 6.0
40  52.5    45.0    68.0
41  46.5    35.0    0.0
42  193.6   135.0   0.0
43  122.8   90.0    0.0
44  222.6   165.0   265.0
  • please follow these guidelines for asking a question about pandas: https://stackoverflow.com/questions/20109391/how-to-make-good-reproducible-pandas-examples – David Erickson Jun 17 '20 at 08:12
  • instead of an image you can copy and paste the data into here utilizing the { } feature or indenting each row 4 spaces. Alternatively, you can post a dictionary of your dataframe with the to_dict() funciton. Check out the link! – David Erickson Jun 17 '20 at 08:13

1 Answers1

0

Provided that "Index" is also a column:

temp_df.style.apply(lambda x: ["background: green" if (i==1 and v > x.iloc[3] and x.iloc[3] != 0) else ("background: red" if (i==1 and v < x.iloc[2]) else "") for i, v in enumerate(x)], axis=1)

i: aims to define the column Share Price to be styled (column: 1)

Hoa Nguyen
  • 470
  • 6
  • 15