Python ValueError:(';系列长度必须匹配,才能在使用Pandas样式时进行比较
通过使用,我试图用条件格式突出显示已从数据帧(如下所示)中子集(按行和按列)的单元格: 例如,在对第0行和第1行以及第“Adam”列和第“Gill”列中的单元格进行子集设置后,如果这些单元格的值大于其相应的目标值,我想将其高亮显示为绿色,如果值小于目标值,则高亮显示为橙色 但是,在运行代码时,我不断遇到以下错误:Python ValueError:(';系列长度必须匹配,才能在使用Pandas样式时进行比较,python,html,pandas,dataframe,Python,Html,Pandas,Dataframe,通过使用,我试图用条件格式突出显示已从数据帧(如下所示)中子集(按行和按列)的单元格: 例如,在对第0行和第1行以及第“Adam”列和第“Gill”列中的单元格进行子集设置后,如果这些单元格的值大于其相应的目标值,我想将其高亮显示为绿色,如果值小于目标值,则高亮显示为橙色 但是,在运行代码时,我不断遇到以下错误: ValueError:(“序列长度必须匹配才能进行比较”,u出现在索引0') 我能做些什么来解决这个问题 这是我的代码: import pandas as pd def Above
ValueError:(“序列长度必须匹配才能进行比较”,u出现在索引0'
)
我能做些什么来解决这个问题
这是我的代码:
import pandas as pd
def AboveTarget(s): # For dataframe style
green = s > df["Target"]
orange = s < df["Target"]
return ["background-color: #86f922" if v else "background-color: #faebde" if w else "background-color: white" for v, w in zip(green, orange)]
df = pd.DataFrame({"Adam": [99.1, 95.2, 83.1],
"Gill": [99.2, 96.1, 81],
"Louis": [60, 71.5, 99.1],
"Target": [99, 98, 95]
})
html = (df.style.\
apply(AboveTarget, subset = pd.IndexSlice[0:1, ["Adam", "Gill"]], axis = 1)
)
html
将熊猫作为pd导入
def高于目标值:#用于数据帧样式
绿色=s>df[“目标”]
橙色=s
在上述目标中,您试图将名为s
的pd.Series
与数据帧df
进行比较,这就是它不起作用的原因
一种方法是执行以下操作:
def AboveTarget(s, df): # For dataframe style
green = s > df.loc[s.name, "Target"]
orange = s < df.loc[s.name, "Target"]
return ["background-color: #86f922" if v
else "background-color: #faebde" if w
else "background-color: white"
for v, w in zip(green, orange)]
html = (df.style.\
apply(AboveTarget, subset = pd.IndexSlice[0:1, ["Adam", "Gill", "Louis"]],
axis=1, args=(df,))
)
html
它之所以工作,是因为
Target
既不是
也不是
,因此它将获得白色的背景色,通过使用子集
将切片元素传递到函数目标上方
。结合轴=1
将参数s
传递到AboveTarget
将是数据帧中的行,即索引为[“Adam”,“Gill”]
的Pandas系列。您无法将其与索引为[0,1,2]
的df[“Target”]
系列进行比较
你需要:
import pandas as pd
def AboveTarget(s): # For dataframe style
green = s > s["Target"]
orange = s < s["Target"]
return ["background-color: #86f922" if v else "background-color: #faebde"\
if w else "background-color: white" for v, w in zip(green, orange)]
df = pd.DataFrame({"Adam": [99.1, 95.2, 83.1],
"Gill": [99.2, 96.1, 81],
"Louis": [60, 71.5, 99.1],
"Target": [99, 98, 95]
})
html = (df.style.\
apply(AboveTarget, subset = pd.IndexSlice[0:1, ["Adam", "Gill", "Target"]], axis = 1)
)
html
将熊猫作为pd导入
def高于目标值:#用于数据帧样式
绿色=s>s[“目标”]
橙色=s
将列“Target”传递给函数,并与相应的s[“Target”]
值进行比较
import pandas as pd
def AboveTarget(s): # For dataframe style
green = s > s["Target"]
orange = s < s["Target"]
return ["background-color: #86f922" if v else "background-color: #faebde"\
if w else "background-color: white" for v, w in zip(green, orange)]
df = pd.DataFrame({"Adam": [99.1, 95.2, 83.1],
"Gill": [99.2, 96.1, 81],
"Louis": [60, 71.5, 99.1],
"Target": [99, 98, 95]
})
html = (df.style.\
apply(AboveTarget, subset = pd.IndexSlice[0:1, ["Adam", "Gill", "Target"]], axis = 1)
)
html