ребята, я попробовал официальный пример. Что-то нашел в Интернете, но все никак не могу понять.
в приведенной выше таблице я хочу запустить следующий тест:
if df.loc['price_real'] > df.loc['price']:
если правда, отметьте df.loc['price'] знаком 'background-color: green'
df.style.apply(lambda x: ['background-color: green']*len(df_s) if \(x.loc['stock_price_real'] > x.loc['stock_price']) else ['background-color: none']*len(df_s), \axis = 0)
вышеприведенный код частично работает, но я не могу заставить его отмечать только строку df.loc['price']. Я пытался добавить subset=pd.IndexSlice[['stock_price'], :], но получилось по ошибке.
Есть пример моей программы, но он также отмечает все строки ниже или выше.
Есть какие-нибудь предложения, пожалуйста?
только df.loc['price'] строка отмечена, если это правда
К сожалению нет. Всякий раз, когда я пишу подмножество, оно заканчивается ошибкой. target=pd.IndexSlice['stock_price', df_s.columns] Все эти примеры всегда связаны с сравнением одной строки. Также предлагается использовать np.selectвместо понимания списка.






Это должно сработать, мы перебираем столбцы и выбираем только stock_price строку для окраски, если условие True :
df.style.apply(
lambda x: ["background-color: green"
if (x.name == "stock_price" and x[col] < df.loc["stock_price_real", col])
else ""
for col in x.index],
axis=1)
минимальный пример:
import pandas as pd
data = {"2000": [1, 1.5], "2001": [2, 1.8]}
index = ["stock_price", "stock_price_real"]
df = pd.DataFrame(data, index=index)
df.style.apply(
lambda x: ["background-color: green"
if (x.name == "stock_price" and x[col] < df.loc["stock_price_real", col])
else ""
for col in x.index],
axis=1)
спасибо, шеф, это именно то, чего я пытался достичь.
Отвечает ли это на ваш вопрос? stackoverflow.com/questions/71359558/…