У меня есть dataframe с необработанными данными, включая соответствующие данные, показанные ниже, которые упорядочены по метке времени.
df1
Line Timestamp Depot Product
0 Line1 08:00 1 P1
1 Line1 08:10 1 P1
2 Line2 08:15 1 P4
3 Line1 08:20 1 P1
4 Line3 08:23 2 P13
5 Line1 08:30 2 P1
У меня есть сводные таблицы для каждой производственной линии, полученные из этого, с соответствующими данными, как показано ниже:
df2
Line Product Depot Time_Complete
0 Line 1 P1 1 NaN
1 Line 1 P1 2 NaN
2 Line 1 P2 1 NaN
3 Line 1 P2 1 NaN
То, что я пытаюсь сделать, это взять последнюю метку времени из первого кадра данных, соответствующего определенным критериям. В этом случае, если строка 1, P1, депо 1 имеет последний штамп времени, будет 08:20. Я не на 100% уверен, с чего начать с такого рода споров
Мне кажется, нужно drop_duplicates
по указанным столбцам, а затем merge
с левым соединением:
df11 = df1.drop_duplicates(['Line','Depot','Product'], keep='last')
df = df2.merge(df11, on=['Line','Depot','Product'], how='left')
print (df)
Line Product Depot Time_Complete Datestamp
0 Line1 P1 1 NaN 08:20
1 Line1 P1 2 NaN 08:30
2 Line1 P2 1 NaN NaN
3 Line1 P2 1 NaN NaN