擅长:python、mysql、java
<p>试试这个:</p>
<pre><code># first find the peaks
# interpolate is important for find_peaks to work
peaks = (find_peaks(df.set_index('date').interpolate()
.reset_index().Values, rel_height=0.1)[0])
# copy the peaks' dates for easy manipulation
peak_df = df.loc[peaks, ['date']].copy()
# mark where the peak was too close to the last
markers = (peak_df.date - peak_df.date.shift()).le(pd.Timedelta('14d'))
# filter
# df[markers.notnull() # where the peaks are
# | (~markers.bfill().eq(False))] # those between the peaks that are far enough
# as the above code gives an error
markers = ((markers.notnull() | (~markers.bfill().eq(False)))==True).index
df.loc[markers]
</code></pre>