Получение значения последнего значения в серии для соответствия определенным критериям в пандах

1

У меня есть 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% уверен, с чего начать с такого рода споров

Теги:
pandas
python-3.x

1 ответ

1
Лучший ответ

Мне кажется, нужно 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
  • 1
    Совершенно верно, у меня изначально были все значения слияния как NaN, но до несовместимых dtypes в столбцах «слияние по», после того как они совпали, все работает как нужно. Спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню