Как раскрасить определенные столбцы в фрейме данных с помощью нескольких условий Python

#python #pandas #pandas-styles

Вопрос:

У меня возникли проблемы с раскрашиванием клеток с помощью панд. У меня есть этот фрейм данных, который содержит сводную таблицу с совокупностью заказов и в каком шаге они находятся.

 import pandas as pd  from datetime import datetime, timedelta   # assign data of lists.  data = {'Date': ['2021-10-01', '2021-10-02', '2021-10-03', '2021-10-04','2021-10-05','2021-10-06','2021-10-07','2021-10-08'],  'Waiting_for': [5, 0, 0, 10,34,10,4,12],  'Picking': [20,12,5,9,0,21, 19, 18],  'Shipped': [20, 21,7,9,12, 19,0, 18],  'Received': [5,7,10,9,20,6,10,5]}    # Create DataFrame  df = pd.DataFrame(data)  df['Date'] = pd.to_datetime(df['Date'])  # Print the output.  print(df)  

И я хотел бы выделить клетки, следующие всем этим условиям:

  • Совокупность больше 0
  • В зависимости от того, на каком этапе они находятся, например, я хочу выделить все заказы, ожидающие более 32 дней, заказы, которые находятся в комплектации более 34 дней, заказы, которые отгружены более 36 дней.

Я пытаюсь написать функцию, а затем использовать df.style.apply, но я не привыкаю к python, и мне это сложно.

 def highlight_col(x):  #copy df to new - original data are not changed  df1 = x.copy()  #set by condition  mask = df1['Date'] lt; (datetime.now() - timedelta(days=35))  df1.loc[mask, :] = 'background-color: grey'  df1.loc[~mask,:] = 'background-color: ""'  return df1   df.style.apply(highlight_col, axis=None)  

Желаемый результат:

выход

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

1. Я немного не совсем понимаю. У вас есть цифры в столбцах, но вы, похоже, ссылаетесь на границы дат. Например, ждать более 33 дней и т. Д. Я не понимаю. Что такое число 5 под ожиданием и как оно связано с количеством времени, которое оно ждало?

2. Первый столбец-это дата, число 5, которое вы упомянули, является совокупным числом. Есть 5 заказов с первого октября, которые находятся в состоянии ожидания. Я хочу выделить, используя несколько условий столбца

3. Верно. Я все еще не понимаю, как применяются эти правила. Например, 3 2021-10-04. 9 в столбце Отгружено не выделено. Это больше, чем 0, а 2021-10-04 было более 29 дней назад. Почему он не стилизован?

4. Извините, мне было 32, 34 и 36, я только что отредактировал свой вопрос