擅长:python、mysql、java
<p>IIUC,您可以使用<code>pd.melt</code>和<code>join</code></p>
<pre><code>s = (
pd.melt(df, id_vars=["start", "end"])
.dropna()
.groupby(["start", "end"])["variable"]
.agg(list)
.to_frame("vals")
)
df1 = df.set_index(['start','end']).join(s)
print(df1)
rf1 rf2 rf3 vals
start end
2008-01-01 2008-10-01 NaN 12 NaN [rf2]
2008-02-01 2008-11-01 NaN 16 NaN [rf2]
2008-03-01 2008-12-01 32.0 18 18.0 [rf1, rf2, rf3]
</code></pre>