Как отформатировать отрицательный процент красным цветом, а положительный-зеленым?

#python #pandas #python-requests #pycharm #finance

Вопрос:

У меня есть код, который собирает финансовые данные с помощью API и преобразует их в файл ecxel. В одном из столбцов у меня есть данные, учитывающие изменение цены акций за последний день, и я хочу, чтобы python написал отрицательные изменения красным цветом, а положительные-зеленым. У меня есть представление о том, как я мог бы это сделать, используя и если/иначе, но проблема в том, какую переменную я должен вызвать в состоянии if.

Вот та часть, когда я добавляю данные из API с помощью функции request.get.

 data = requests.get(batch_apu_call_url).json()
for symbol in symbol_string.split(','):

final_dataframe = final_dataframe.append(
        pd.Series(
        [
            data[symbol]['quote']['companyName'],
            symbol,
            data[symbol]['quote']['latestPrice'],
            data[symbol]['quote']['changePercent'], #This is the line thats collects the changes in the stock prices 
            data[symbol]['quote']['marketCap'],
            'N/A',
            data[symbol]['quote']['latestTime']
        ],
        index=my_columns),
        ignore_index=True,

    )
 

Это та часть, когда я хочу отформатировать специальную колонку

 change_format = writer.book.add_format(
{
    'num_format': '0.00%',
    'font_color': 'EA1009' if [] < 0 else '2AEA09',   #insted of the square brackets I want to put the variabel 
    'bg_color': background_color,
    'border': 1
}
 

)

Это пример части результата в python:

                           Name Ticker  Stock Price      /-%     Market Cap
0    Agilent Technologies Inc.      A      127.120  0.01096    38026751371
1  American Airlines Group Inc    AAL       26.301  0.02625    16894821033
2       Advance Auto Parts Inc    AAP      184.060  0.01200    12369889031
3                    Apple Inc   AAPL      125.884 -0.02000  2114224151643
4                   Abbvie Inc   ABBV      109.250 -0.00430   191633606290

Process finished with exit code 0
 

И тот же результат в экселе. Файл ecxel сегодня не обновляется, поэтому данные могут отличаться от данных python.
https://i.stack.imgur.com/i9PIz.png

И вот что я хочу, чтобы это сработало: https://i.stack.imgur.com/G8xA5.png

Комментарии:

1. Пожалуйста, поделитесь соответствующим образцом данных или URL-адресом

Ответ №1:

Я нашел решение, и лучший способ сделать это -:

 change_format = writer.book.add_format(
    {
        'num_format': '0.00%[Green];-0.00%[Red]',
        'font_color': '',
        'bg_color': background_color,
        'border': 1
    }
)