gpt4 book ai didi

python - 查找最后一个可能的索引值以满足过滤要求

转载 作者:太空狗 更新时间:2023-10-30 01:11:09 25 4
gpt4 key购买 nike

我有一个数据框如下:

Slot      Time     Last      Next
1 9:30 9:37
2 9:35 9:32 9:40
3 9:40 9:37 9:52
4 9:45 9:41 9:47
5 9:50 9:47 10:00

我想在这里做的是创建两个新列 'min' 和 'max',这样 'min' 输出最后一个可能的时间槽 < last;并且 'max' 输出最后一个可能的时隙

此处所需的输出应该是:

df['min'] = [NaN,1,2,3,4]

and

df['max'] = [2,2,5,4,5]

我尝试了一些类似的东西

for index, row in df.iterrows():
row['min'] = df[df['Time'] < row['Last']]['Slot']

但得到一个空列表。任何帮助是极大的赞赏。谢谢!

最佳答案

首先,我将日期列转换为日期时间格式,否则当你比较字符串时,它只考虑第一个数字:

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 :

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

关于python - 查找最后一个可能的索引值以满足过滤要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53553973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com