我在这里尝试但失败了。我想做的就是从此数据框中获取“Time_of_Event”值:
events_data = {'Time_of_Event':[8, 22, 24,34,61,62,73,79,86]}
my_events_df = pd.DataFrame(events_data)
并根据此数据帧的“Job_Start_Times”进行搜索:
job_data = {'Job_Start_Time':[20,50,75], 'Job_Name':['Job_01','Job_02','Job_03']}
my_jobs_df = pd.DataFrame(job_data)
找到它属于哪个范围,然后将“Job_Name”返回/附加到我的第一个“my_events_df”数据帧。
例如,对于“Time_of_Event”中的值8,我想返回“Job_01”。对于值 61,我想返回“Job_02”,因为 61 介于 50 和 75 之间。
我尝试了一些for循环、if-else,但没有取得太大进展。如有任何帮助,我们将不胜感激!
最佳答案
我们可以尝试使用 pd.merge_asof
new_df = (pd.merge_asof(my_events_df.sort_values('Time_of_Event'),
my_jobs_df, left_on='Time_of_Event',
right_on = 'Job_Start_Time',
direction = 'backward')
.drop(columns = 'Job_Start_Time')
.bfill())
print(new_df)
Time_of_Event Job_Name
0 8 Job_01
1 22 Job_01
2 24 Job_01
3 34 Job_01
4 61 Job_02
5 62 Job_02
6 73 Job_02
7 79 Job_03
8 86 Job_03
关于python - 返回两个行值之间的值(伪时间序列?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60128552/