擅长:python、mysql、java
<p>在最新版本的pandas中,<code>.where()</code>还接受一个callable!在</p>
<p><a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.where.html?highlight=where#pandas.DataFrame.where" rel="nofollow">http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.where.html?highlight=where#pandas.DataFrame.where</a></p>
<p>因此,现在可以进行以下操作:</p>
<pre><code>drinks.light_drinker.where(lambda x: x == 1)
</code></pre>
<p>这在方法链中特别有用。但是,这将只返回序列(而不是根据<code>light_drinker</code>列中的值过滤的数据帧)。这与你的问题是一致的,但我将详细说明另一个案件。在</p>
<p>要获取筛选的数据帧,请使用:</p>
^{pr2}$
<p>注意,这将保持self的形状(这意味着您将拥有所有条目都是<code>NaN</code>的行,因为该索引的<code>light_drinker</code>值的条件失败)。在</p>
<p>如果不想保留数据帧的形状(即希望删除<code>NaN</code>行),请使用:</p>
<pre><code>drinks.query('light_drinker == 1')
</code></pre>
<p>请注意,<code>DataFrame.index</code>和<code>DataFrame.columns</code>中的项默认放置在<code>query</code>命名空间中,这意味着您不必引用自身。在</p>