首先,我将日期列转换为日期时间格式,否则当您比较字符串时,它只考虑第一个数字:
df = df_.copy()
df.loc[:, 'Time':'Next'] = df.loc[:, 'Time':'Next']
.apply(pd.to_datetime, errors='coerce')
对于min列,您可以执行以下操作:
min_vals = [(df['Time'] < x)[::-1].idxmax()
if any(df['Time'] < x) else np.nan for x in df['Last']]
df_['min'] = df.loc[min_vals,'Slot'].values
最大的:
max_vals = [(df['Time'] < x)[::-1].idxmax()
if any(df['Time'] < x) else np.nan for x in df['Next']]
df_.loc[:,'max'] = df.loc[max_vals,'Slot'].values
哪个会给你:
print(df_)
Slot Time Last Next min max
0 1 9:30 - 9:37 NaN 2
1 2 9:35 9:32 9:40 1.0 2
2 3 9:40 9:37 9:52 2.0 5
3 4 9:45 9:41 9:47 3.0 4
4 5 9:50 9:47 10:00 4.0 5