回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在解码NLSY79的值。他们是职业行业。每个行业都有许多职业;例如:从17到29的所有职业都是农业、林业和渔业行业。我尝试了三种策略,但有两种返回错误,第三种没有将值存储在数据帧中。你知道吗</p>
<p>执行代码如下所示(调查对象最多可以列出5个作业,所有作业都包含在数据中)</p>
<pre><code>df[['Job1', 'Job2', 'Job3', 'Job4', 'Job5']].replace(to_replace=jobs['code'], value=jobs['true'], inplace=True)
</code></pre>
<p>策略1</p>
<blockquote>
<p>ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()</p>
</blockquote>
<pre><code>jobs = {'code': ( tuple(range(17,29)), ... )
'true': ( 'Agriculture, Forestry & Fisheries', ... )
</code></pre>
<p>策略2</p>
<blockquote>
<p>TypeError: Cannot compare types 'ndarray(dtype=float64)' and 'range'</p>
</blockquote>
<pre><code>jobs = {'code': ( range(17,29), ... )
'true': ( 'Agriculture, Forestry & Fisheries', ... )
</code></pre>
<p>策略3</p>
<blockquote>
<p>SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame</p>
</blockquote>
<pre><code>jobs = {'code': ( any(tuple(range(17, 29))), any(tuple(range(47, 58))), ... )
'true': ( 'Agriculture, Forestry & Fisheries', 'Mining', ... )
</code></pre>
<p>我认为对第三个策略/执行代码进行调整是最好的,但我对编码还是比较陌生,不确定会是什么。对如何解决这个问题有什么建议吗?你知道吗</p>
<pre><code>Input:
Job1 ...
0 339 ...
1 757 ...
2 739 ...
3 448 ...
Desired Output:
Job1 ...
0 Utilities ...
1 Professional ...
2 Professional ...
3 Retail ...
job = {'code': (list(range(17, 29)),
list(range(47, 58)),
list(range(67, 78)), ...)
'true': ('Agriculture, Forestry & Fisheries',
'Mining',
'Construction', ...)}
</code></pre>