擅长:python、mysql、java
<p>尝试使用<a href="http://pandas.pydata.org/pandas-docs/dev/indexing.html#indexing-with-isin" rel="noreferrer">isin</a>(感谢DSM在这里建议使用<code>loc</code>而不是<code>ix</code>):</p>
<pre><code>In [78]: x = pd.DataFrame([['sam',328],['ruby',3213],['jon',121]], columns = ['name', 'score'])
In [79]: names = ['sam', 'ruby']
In [80]: x['name'].isin(names)
Out[80]:
0 True
1 True
2 False
Name: name, dtype: bool
In [81]: x.loc[x['name'].isin(names), 'score'].sum()
Out[81]: 3541
</code></pre>
<hr/>
<p>CT Zhu建议使用<code>np.in1d</code>更快的替代方法:</p>
<pre><code>In [105]: y = pd.concat([x]*1000)
In [109]: %timeit y.loc[y['name'].isin(names), 'score'].sum()
1000 loops, best of 3: 413 µs per loop
In [110]: %timeit y.loc[np.in1d(y['name'], names), 'score'].sum()
1000 loops, best of 3: 335 µs per loop
</code></pre>