根据python中另一个列值的顺序设置数据框中的列值

因桑杰

我有如下数据框:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python根据另一个数据框中的列值匹配列名

Python根据另一个数据框值中存在的列索引填充数据框值

在从另一个列值派生的数据框中设置计算的列值

根据另一个数据框计算数据框中的列值

python pandas:根据列表中列的另一个值设置列的值

根据列中的值填充另一个数据框的值

根据另一个数据框中的列分配值列

如何根据另一个向量的值删除R中数据框中的列?

根据熊猫中的另一个数据框更改列中的值

根据条件为另一个数据框的数据框列设置值

根据另一个数据集中的列值在一个数据框中创建列

如何根据另一个数据框中的列的存在来更新数据框中列的值

根据与另一个数据框中的值匹配的行数创建新列

根据另一个数据框替换列中的值

根据条件从另一个数据框中复制列值

根据另一个数据框列值pyspark设置列状态

根据另一个数据框中的列值从 R 中的数据框中删除行

根据条件将数据框中的列除以另一个数据框的列的值?

根据另一个定制顺序的列对数据框中的列对进行排序

熊猫:根据另一个数据框中的值在数据框中添加新列

根据id列中的公共值从另一个数据框中减去数据框的行

如何根据另一个数据框中的列填充数据框中的空值?

根据另一个数据框中的值将列添加到数据框中

从另一个数据框中获取的列中的python总和值

根据 R 中一列的值将一个数据框中的值插入到另一个数据框中

根据另一个数据框中的匹配ID替换数据框列值

如何根据另一个数据框条件替换数据框列中的值

如何根据另一个数据框中的日期时间条件从数据框中选择列的值?

根据另一个数据框的行值在数据框中添加新列