仅对 pandas 数据框中列表中的某些值着色
color only some value(s) in a list in pandas dataframe
我有一个数据框,其中一列中的每个单元格都包含一个格式为 [2,19,25,39,49]
的列表。我想为列表 common = [7,9,16,18,19,20,21,25,33,35,38,40,49]
中包含的每个列表中的各个值着色,因此在示例中,19,25 和 49 应该以不同的颜色着色,或者这就是我想要实现的。
我试过使用:
def color_common(x):
if x in common:
color='green'
else:
color='black'
我收到回复,“系列的真值不明确”。
如果我使用 x.any(),我会得到“结果具有形状:(6,)
预期形状:(5, 6)"
我不明白预期的形状评论,也不明白模棱两可的事实和 where/how 应用 any() 或 all()。
list.I 的颜色组件是否可以很容易地为整个单元格或单元格的内容着色。我之前没有设计过 Panda 数据框的样式,因此可能是我的问题“愚蠢”
将 common(您的列表)转换为正则表达式模式:
pat = re.compile(r'\b(' + '|'.join(map(str, common)) + r')\b')
(需要重新导入)。
然后定义如下格式化函数:
def myFmt(txt):
return pat.sub(r'<font color="#ff0000"></font>', repr(txt))
(我假设要求的格式是“color red”,但是改变它
随心所欲。)
并以您的方式呈现您的 DataFrame,运行:
df.style.format(myFmt)
为了测试它,我创建了一个 DataFrame 包含:
A B
0 [1, 9, 25] [10, 18, 77]
1 [3, 7, 22] [4, 21, 27]
2 [11, 16, 29] [24, 38, 41]
得到如下结果:
注意:如果您只想将此格式应用于选定的列,
将 subset 参数与“所需”列的列表一起传递。
我有一个数据框,其中一列中的每个单元格都包含一个格式为 [2,19,25,39,49]
的列表。我想为列表 common = [7,9,16,18,19,20,21,25,33,35,38,40,49]
中包含的每个列表中的各个值着色,因此在示例中,19,25 和 49 应该以不同的颜色着色,或者这就是我想要实现的。
我试过使用:
def color_common(x):
if x in common:
color='green'
else:
color='black'
我收到回复,“系列的真值不明确”。 如果我使用 x.any(),我会得到“结果具有形状:(6,) 预期形状:(5, 6)" 我不明白预期的形状评论,也不明白模棱两可的事实和 where/how 应用 any() 或 all()。 list.I 的颜色组件是否可以很容易地为整个单元格或单元格的内容着色。我之前没有设计过 Panda 数据框的样式,因此可能是我的问题“愚蠢”
将 common(您的列表)转换为正则表达式模式:
pat = re.compile(r'\b(' + '|'.join(map(str, common)) + r')\b')
(需要重新导入)。
然后定义如下格式化函数:
def myFmt(txt):
return pat.sub(r'<font color="#ff0000"></font>', repr(txt))
(我假设要求的格式是“color red”,但是改变它 随心所欲。)
并以您的方式呈现您的 DataFrame,运行:
df.style.format(myFmt)
为了测试它,我创建了一个 DataFrame 包含:
A B
0 [1, 9, 25] [10, 18, 77]
1 [3, 7, 22] [4, 21, 27]
2 [11, 16, 29] [24, 38, 41]
得到如下结果:
注意:如果您只想将此格式应用于选定的列, 将 subset 参数与“所需”列的列表一起传递。