我在 Pandas 中有一個資料框,其中包含行星名稱和每個行星的資訊。行星名稱存盤在標題為“行星”的列下。我想突出顯示特定行星、地球、土星和火星的行。出于某種原因,當我運行此腳本并匯出為 Excel 檔案時,僅突出顯示了 highlight_planets 串列中的第一個行星。在這種情況下,僅突出顯示地球(未突出顯示土星和火星)。如果我將土星移動到第一個位置,將地球移動到第二個位置,則資料框中只會突出顯示土星行。如何突出顯示我的行星列包含地球、土星或火星的所有行?
謝謝。
def highlight_sentiment(row):
highlight_planets = ['Earth', 'Saturn', 'Mars']
for m in highlight_planets:
if row['planet'] == m:
return ['background-color: yellow'] * len(row)
else:
return ['background-color: white'] * len(row)
df.style.apply(highlight_sentiment, axis=1)
df = df.style.apply(highlight_sentiment, axis=1)
df.to_excel("df_test.xlsx", index = False)
uj5u.com熱心網友回復:
解決這個問題的更標準的方法是構建一個 DataFrame 樣式,該樣式可以根據行星在串列中的位置使用
示例資料和匯入:
import pandas as pd
df = pd.DataFrame({
'planet': ['Mercury', 'Venus', 'Earth',
'Mars', 'Jupiter', 'Saturn'],
'data': [1, 2, 3, 4, 5, 6]
})
uj5u.com熱心網友回復:
在您的for回圈中,return如果行星不是您串列中的第一個值,您將立即執行。
將最后一個return陳述句移到for回圈之外,這樣它只會在行星與串列中的任何值都不匹配時回傳白色背景。
def highlight_sentiment(row):
highlight_planets = ['Earth', 'Saturn', 'Mars']
for m in highlight_planets:
if row['planet'] == m:
return ['background-color: yellow'] * len(row)
return ['background-color: white'] * len(row)
順便說一句,您可以for完全避免回圈,只需使用in:
def highlight_sentiment(row):
highlight_planets = ['Earth', 'Saturn', 'Mars']
if row['planet'] in highlight_planets:
return ['background-color: yellow'] * len(row)
return ['background-color: white'] * len(row)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/325048.html
上一篇:網頁抓取回傳“無”
