将列表映射到数据框列值

时间:2020-10-06 14:01:48

标签: python-3.x pandas

我有两个列表

Countrylist = ['USA', 'INDIA', 'SINGAPORE','CHINA','MALAYSIA']
COLORLIST = ['#F1F326', '#D95969', '#D4526E', '#250591', '#FDBB2B']

我有一个包含4列的df:

Country Category AVGSPEED AVGVELOCITY
USA     High     345       4634
INDIA   Low      4363      435346
USA     Low      345       346346
CHINA   High     3462      23423
CHINA   Medium   46346     46346

我想在数据框中添加新列,以使列表中的颜色映射到数据框中显示的国家/地区。 一种思考的方式是在两个列表之间创建一个字典,然后将键值映射到数据框中的国家/地区列。

2 个答案:

答案 0 :(得分:1)

在两个列表的zip创建的字典中使用Series.map

Countrylist = ['USA', 'INDIA', 'SINGAPORE','CHINA','MALAYSIA']
COLORLIST = ['#F1F326', '#D95969', '#D4526E', '#250591', '#FDBB2B']

df['Color'] = df['Country'].map(dict(zip(Countrylist, COLORLIST)))
print (df)
  Country Category  AVGSPEED  AVGVELOCITY    Color
0     USA     High       345         4634  #F1F326
1   INDIA      Low      4363       435346  #D95969
2     USA      Low       345       346346  #F1F326
3   CHINA     High      3462        23423  #250591
4   CHINA   Medium     46346        46346  #250591

答案 1 :(得分:1)

是的,它是地图:

        set
        {
            if(!Equals(value, _myProperty))
            {
                DoSomething();
            }
            Set(MyPropertyPropertyName, ref _myProperty, value);
        }

输出:

df['color'] = df['Country'].map(pd.Series(COLORLIST, index=Countrylist))