<p>您可以<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.groupby.html" rel="nofollow noreferrer"><strong>^{<cd1>}</strong></a>在<code>Department</code>中找到<code>Year.min()</code>,其中<code>Salary >= 100</code>:</p>
<pre class="lang-py prettyprint-override"><code>first100 = df.groupby('Department').apply(
lambda g: g[g.Salary >= 100].Year.min())
# Department
# Legal 2018.0
# R&D NaN
# dtype: float64
</code></pre>
<p>然后<a href="https://pandas.pydata.org/docs/reference/api/pandas.Series.map.html" rel="nofollow noreferrer"><strong>^{<cd5>}</strong></a>这些<code>first100</code>年乘以<code>Department</code>并从<code>Year</code>中减去。结果显示在<code>Result</code>中以供比较:</p>
<pre class="lang-py prettyprint-override"><code>df['Result'] = df.Year - df.Department.map(first100)
df.loc[df.Salary < 100, 'Result'] = 0
# Name Year Department Salary Hit100after Result
# 0 John 2018 R&D 80 0 0.0
# 1 Marie 2018 Legal 90 0 0.0
# 2 Jill 2018 Legal 100 0 0.0
# 3 John 2019 R&D 85 0 0.0
# 4 Marie 2019 Legal 95 0 0.0
# 5 Jill 2019 Legal 105 1 1.0
# 6 John 2020 R&D 90 0 0.0
# 7 Marie 2020 Legal 100 2 2.0
# 8 Jill 2020 Legal 110 2 2.0
</code></pre>
<hr/>
<h3>当前答案的计时</h3>
<div class="s-table-container">
^{tb1}$
</div>