<p>我们可以转换<code>b</code><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.to_datetime.html" rel="nofollow noreferrer">^{<cd2>}</a>(如果还没有)(为了正确的排序行为),然后<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.sort_values.html" rel="nofollow noreferrer">^{<cd3>}</a>,以便最大的<code>b</code>值是最后一个,然后<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.core.groupby.SeriesGroupBy.transform.html" rel="nofollow noreferrer">^{<cd5>}</a>最后一个,并让索引对齐正确地关联这些值:</p>
<pre><code># df['b'] = pd.to_datetime(df['b']) # Convert to_datetime if not already
df['c'] = df.sort_values('b').groupby('a')['c'].transform('last')
</code></pre>
<p><code>df</code>:</p>
<pre><code> a b c
0 zx5 2021-01-01 bbb
1 zx5 2021-01-02 bbb
2 ab1 2021-01-03 ddd
3 ab1 2021-01-04 ddd
4 mn3 2021-01-05 eee
5 mn3 2021-01-04 eee
</code></pre>
<hr/>
<p>通过<code>%timeit</code>的一些定时:</p>
<pre><code>%timeit df.sort_values('b').groupby('a')['c'].transform('last')
275 µs ± 6.23 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
</code></pre>
<pre><code>%timeit df['a'].map(df.sort_values(by='b').groupby('a')['c'].last())
322 µs ± 8.28 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
</code></pre>