擅长:python、mysql、java
<p>因为<code>map</code>是函数,而且python代码不使用变量<code>map</code>,所以更好的做法是更改类似于<code>mapping</code></p>
<p>然后使用<a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.to_numeric.html" rel="nofollow noreferrer">^{<cd5>}</a>和<code>errors='coerce'</code>将<code>Reference</code>转换为数字,如果字符串中存在错误值,请使用<a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.fillna.html" rel="nofollow noreferrer">^{<cd7>}</a>替换缺少的值的解决方案</p>
<pre><code>mapping = {'Pop': [9, 11, 13], 'HipHop': [15, 19, 22], 'Unknown': '_'}
artist = {'Name': ['Taylor','Kanye','Alex'],'Reference': [9,15,'_']}
df = pd.DataFrame(artist, columns = ['Name', 'Reference'])
df['Reference'] = pd.to_numeric(df.Reference, errors='coerce')
out = (df.set_index('Name').Reference
.replace({z : x for x , y in mapping.items() for z in y})
.fillna('Unknown')
.to_dict())
print(out)
{'Taylor': 'Pop', 'Kanye': 'HipHop', 'Alex': 'Unknown'}
</code></pre>