我有一本字典
type_dict = {3: 'foo', 4: 'bar',5: 'foobar', 6: 'foobarbar'}
以及包含以下列的DataFrame:
>>> df.type
0 3
1 4
2 5
3 6
4 3
5 4
6 5
7 6
8 3
我想创建一个包含相应type_dict
值的新列,但以下是我唯一可以提出并且无法正常工作的内容:
>>> type_dict[df.type]
TypeError: 'Series' objects are mutable, thus they cannot be hashed
>>> type_dict[df.type.values]
TypeError: unhashable type: 'numpy.ndarray'
我真的需要apply
并遍历每一行,还是有更有效的替代方案?
答案 0 :(得分:5)
您可以在此处使用map
:
>>> df['type'].map(type_dict)
0 foo
1 bar
2 foobar
3 foobarbar
4 foo
5 bar
6 foobar
7 foobarbar
8 foo
Name: type, dtype: object
map
可以使用字典,系列或函数,并返回带有映射值的新系列。它也非常有效地实现(例如,比apply
更多)。