这是我的DataFrame…
from termcolor import colored
import pandas as pd
data = {'Col1': [0, 15, 10, 5, 20, 17], 'Col2': [11, 6, 3, 16, 21, 8], 'Col3': [2, 17, 12, 7, 22, 9],
'Col4': [3, 8, 13, 18, 3, 23], 'Col5': [4, 19, 8, 11, 6, 20]}
df = pd.DataFrame(data)
现在,我试图突出显示每列中的3个最大值,红色(第一大),蓝色(第二大)和洋红色(第三大)颜色,不包括Col2和Col4。
我试着...
columns_to_exclude = ['Col2', 'Col4']
def highlighted(column):
filtered_df = df.drop(columns=columns_to_exclude)
values = column.nlargest(3).tolist()
colors = []
for x in column:
if x in values:
if x == values[0]:
colors.append(colored(str(x), None, 'on_red'))
elif x == values[1]:
colors.append(colored(str(x), None, 'on_blue'))
elif x == values[2]:
colors.append(colored(str(x), None, 'on_magenta'))
else:
colors.append(colored(str(x), 'white'))
return colors
for col in df.columns:
df[col] = highlighted(df[col])
df.columns = [colored(col, None, 'on_black') for col in df.columns]
print(df.to_string(index=False))
但是,让所有5列被突出显示为标准杆我定义的颜色。我哪里错了??还有更短更简单的方法吗??
3条答案
按热度按时间deikduxw1#
您可以在使用
apply
时检查name
:输出
fykwrbwg2#
试试看:
打印(截图):
ct2axkht3#
使用
rank
/map
/difference
:输出量: