我有如下数据框:
df={'NAME':['a','b','c','d','e'],'COUNT':[25,23,14,19,2]}
pd.DataFrame(df,columns=['NAME','COUNT'])
我想根据“ COUNT”列值来设置“颜色”列的值,这些值是有序的,也可能不是有序的
colors=["rgb(211, 63, 106)","rgb(233, 154, 44)","rgb(232, 195, 60)","rgb(226, 230, 189)"]
颜色的前四个值应设置为最大第4个最大行值,其他行应使用填充"rgb(226, 230, 189)"
。但是努力设置这种格式。我是python的新手,我尝试使用'apply'函数,但是如何在apply中找到第n个最大值?
df['color']=df.apply(lambda row:"rgb(211, 63, 106)" if row.COUNT.max() else "rgb(226, 230, 189)")
首先,我们在颜色列表中创建前四个值与前四个值的字典-然后将它们映射到您的数据框,并用目标填充任何空白值。
colors = ["rgb(211, 63, 106)","rgb(233, 154, 44)","rgb(232, 195, 60)","rgb(226, 230, 189)"]
map_colors = dict(zip(
df.sort_values('COUNT',ascending=False).iloc[:4]['COUNT'].values,
colors)
)
print(map_colors)
{25: 'rgb(211, 63, 106)',
23: 'rgb(233, 154, 44)',
19: 'rgb(232, 195, 60)',
14: 'rgb(226, 230, 189)'}
df['Colors'] = df['COUNT'].map(map_colors).fillna('rgb(226, 230, 189)')
NAME COUNT Colors
0 a 25 rgb(211, 63, 106)
1 b 23 rgb(233, 154, 44)
2 c 14 rgb(226, 230, 189)
3 d 19 rgb(232, 195, 60)
4 e 2 rgb(226, 230, 189)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句