擅长:python、mysql、java
<p>这里有一个通用的解决方案,可以根据另一列中的值选择任意列。</p>
<p>这还有一个额外的好处,就是在一个简单的<code>dict</code>结构中分离查找逻辑,这使得修改变得容易。</p>
<pre><code>import pandas as pd
df = pd.DataFrame(
[['UK', 'burgers', 4, 5, 6],
['USA', 4, 7, 9, 'make'],
['Canada', 6, 4, 6, 'you'],
['France', 3, 6, 'fat', 8]],
columns = ('Country', 'a', 'b', 'c', 'd')
)
</code></pre>
<p>我扩展到一个操作,其中条件结果存储在外部查找结构中(<code>dict</code>)</p>
<pre><code>lookup = {'Canada': 'd', 'France': 'c', 'UK': 'a', 'USA': 'd'}
</code></pre>
<p>为存储在<code>dict</code>中的每个列循环<code>pd.DataFrame</code>,并使用条件表中的值来确定要选择的列</p>
<pre><code>for k,v in lookup.iteritems():
filt = df['Country'] == k
df.loc[filt, 'result'] = df.loc[filt, v] # modifies in place
</code></pre>
<p>给生活上一课</p>
<pre><code>In [69]: df
Out[69]:
Country a b c d result
0 UK burgers 4 5 6 burgers
1 USA 4 7 9 make make
2 Canada 6 4 6 you you
3 France 3 6 fat 8 fat
</code></pre>