Python使用字典将numpy列的值映射到另一列
我有一个小的语法问题,我不知道如何解决。我有一本字典,上面有这样一些值:Python使用字典将numpy列的值映射到另一列,python,numpy,dictionary,Python,Numpy,Dictionary,我有一个小的语法问题,我不知道如何解决。我有一本字典,上面有这样一些值: tenancyMap = { "256": 13, "512": 6, "1024": 3, "2048": 1 } 然后我有一个Numpy数据框,其中有一列名为“memory”。内存只能有256、512、1024或2048的值。我想在数据框中创建一个名为“MaxTena
tenancyMap = {
"256": 13,
"512": 6,
"1024": 3,
"2048": 1
}
然后我有一个Numpy数据框,其中有一列名为“memory”。内存只能有256、512、1024或2048的值。我想在数据框中创建一个名为“MaxTenants”的新列,将“memory”列中的每个值映射到TenancMap字典中的正确值
我试着这样做:
sourceAll['maxTenants'] = tenancyMap[str(sourceAll['memory'])]
但这不是有效的语法。当我遇到这个错误时:
f"{repr(type(self).__name__)} objects are mutable, "
TypeError: 'Series' objects are mutable, thus they cannot be hashed
有没有什么干净的方法可以做到这一点,而不必遍历数据帧上的每一行?
sourceAll['maxtrants']=[tenancyMap[str(i)]for i in sourceAll['memory']]
?我们是在谈论numpy阵列还是熊猫系列?对于系列:sourceAll['maxtrants']=sourceAll['memory'].astype(str).map(tenancyMap)
Numpy数据帧??dict
一次只能索引一个键<代码>租户映射[“512”]。一般来说,dict
不能很好地与numpy
配合使用,甚至不能与pandas
配合使用。您试图执行的映射一次只能执行一个元素。@hpaulj公平地说,Numpy的结构化数组与Pandas数据帧非常相似。另一方面,我认为Pandas的.map
非常有效。使用dict
@QuangHoang,看起来像Series.map
将dict
转换为更专业、更快的其他结构。我还没有用它来计时。