【发布时间】:2021-01-12 06:01:55
【问题描述】:
我有一个包含两种不同数据类型(int64 和 str)的字典和一个数据框。我正在尝试将我的 df 第二列中的数据替换为 dict 中的值(如果它们匹配)。
例如-
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,我将无法使映射工作。但是,一旦我进行转换,我就会得到一个无法比较类型的错误,因为其中一个字段是一个字符串。有关如何解决此问题的任何提示都会有所帮助。谢谢!
【问题讨论】: