我有一个包含两种不同数据类型(int64和str)的字典和一个数据帧。我试图用dict中的值替换df第二列中的数据,如果它们匹配的话
例如—
Input:
map = {'Pop': [9, 11, 13], 'HipHop': [15, 19, 22], 'Unknown': '_'}
artist = {'Name': ['Taylor','Kanye','Alex'],'Reference': [9,15,_]}
df = pd.DataFrame(artist, columns = ['Name', 'Reference'])
Expected Output:
output_dict = {'Taylor': 'Pop', 'Kanye': 'HipHop', 'Alex': 'Unknown'}
我的守则如下:
df['Reference'] = df.Reference.astype('int64')
out = df.set_index('Name').Reference.replace({z : x for x , y in map.items() for z in y}).to_dict()
print(out)
我面临的问题是,如果不将第二列转换为int64,则无法使映射正常工作。但是,一旦我转换了,我会得到一个“无法比较类型”错误,因为其中一个字段是字符串。任何关于如何解决这一问题的提示都会很有帮助。谢谢
因为
map
是函数,而且python代码不使用变量map
,所以更好的做法是更改类似于mapping
然后使用^{} 和} 替换缺少的值的解决方案
errors='coerce'
将Reference
转换为数字,如果字符串中存在错误值,请使用^{创建映射dict,然后应用于
Reference
列相关问题 更多 >
编程相关推荐