熊猫:根据另一列和字典的类别添加新列

时间:2019-06-18 16:41:09

标签: python pandas

我有一个具有以下结构的大型df:

data = pd.DataFrame({'a': ['red', 'blue', 'green', 'cat', 'dog'],
                     'b': [1, 1, 2, 3, 3]})

我有一个字典,可以像这样分配类别:

    category_dict = {'red': ['color'],
 'blue': ['color'],
 'green': ['color'],
 'cat': ['animal'],
 'dog': ['animal']}

我想使用字典创建具有以下类别的另一列:

data_update = pd.DataFrame({'a': ['red', 'blue', 'green', 'cat', 'dog'],
                     'b': [1, 1, 2, 3, 3],
                    'c': ['color', 'color', 'color', 'animal', 'animal']})

我以为data['c'] = category_dict[data['a']]会提供我的输出,但是却出现错误'Series' objects are mutable, thus they cannot be hashed

2 个答案:

答案 0 :(得分:0)

使用此:

data['c'] = [category_dict[x][0] for x in list(data['a'])]

答案 1 :(得分:0)

尝试:

flatten_dict = {k:v[0] for k,v in category_dict.items()}

data['c'] = data['a'].map(flatten_dict)