根据python中另一列值的顺序设置dataframe中列的值
我的数据框架如下所示:根据python中另一列值的顺序设置dataframe中列的值,python,pandas,Python,Pandas,我的数据框架如下所示: df={'NAME':['a','b','c','d','e'],'COUNT':[25,23,14,19,2]} pd.DataFrame(df,columns=['NAME','COUNT']) 我想根据“COUNT”列值设置列“color”的值,这些列值是有序的,也可能不是有序的 颜色的前四个值应设置为第四个最大行值,其他行应填充“rgb(226230189)”。但正努力设置这种格式。我是python新手,我尝试过使用“apply”函数,但是如何在apply中
df={'NAME':['a','b','c','d','e'],'COUNT':[25,23,14,19,2]}
pd.DataFrame(df,columns=['NAME','COUNT'])
我想根据“COUNT”列值设置列“color”的值,这些列值是有序的,也可能不是有序的
颜色的前四个值应设置为第四个最大行值,其他行应填充“rgb(226230189)”
。但正努力设置这种格式。我是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)
)
首先,我们用颜色列表中的前四个值创建一个前四个值的字典,然后将它们映射到数据框,并用目标值填充任何空白值
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)