擅长:python、mysql、java
<p>重命名列,然后使用<code>wide_to_long</code>重新构造数据帧<code>Stack</code>删除<code>NAN</code>。然后使用<code>groupby-agg</code>提取最后一个值</p>
<pre><code>df2 = (
pd.wide_to_long(
df2.rename(columns=(lambda x: ''.join(x.split('-')[::-1]))),
stubnames=['v2', 'v1'],
i='date',
j='keys',
suffix='.*'
).stack()
.reset_index(0)
.groupby(level=[0, 1])
.agg({'date': 'last'})
.unstack(-1)
).add_suffix('-last')
df2.columns = df2.columns.droplevel()
</code></pre>
<p>输出:</p>
<pre><code> v2-last v1-last
keys
k1 2021-04-30 2021-05-14
k1k3 NaN 2021-05-14
k2 2021-05-31 2021-05-31
k4 2021-04-10 2021-04-30
</code></pre>