У меня есть 2 кадра данных панд, df_pe
и df_merged
.Оба кадра данных имеют несколько строк, а также несколько столбцов.Теперь есть несколько конкретных вещей, которые я хотел бы выполнить, используя эти кадры данных:
- В
df_merged
есть столбец с именем ST
, который содержит метки времени различных событий в формате, например.(2017-08-27 00:00:00)
.В df_pe
есть 2 столбца Ton
и Toff
, которые содержат время начала и окончания события.Например.(Ton
значение для случайной строки: 2018-08-17 01:20:00
, в то время как Toff
значение 2018-08-17 02:30:00
). Во-вторых, в df_pe
есть столбец, а именно EC
.У меня есть другой фрейм данных с именем df_uniqueal
, в котором также есть столбец с именем EC
.Я хотел бы сделать следующее:
a.Для всех строк в df_merged
, если значение ST находится в пределах Ton
и Toff
в df_pe
, создайте 2 новых столбца в df_merged
: EC
и ED
.Добавьте / поместите значение EC
из фрейма данных df_pe
в этот новый столбец, в то время как поместите значение фрейма данных df_uniqueal
в новый столбец ED
(который в конечном итоге является отображенной версией * 1036).* в df_pe
для получения ED
в df_uniqueal
).Если ни одно из условий не соответствует / после этой процедуры осталось NaN
s (пропущенных значений), поместите строку "NF"
в новый столбец df_merged
ED
, а целое число 0
в *Новый столбец 1045 * EC
.
Я исследовал SO и SE, но не нашел ничего существенного.Любая помощь в этом отношении высоко ценится.
Это моя попытка использовать циклы for
в Python для перебора кадров данных для выполнения первого условия, но оно выполняется вечно (никогда не заканчивается), и я недумаю, что это самый лучший способ сделать это.
for i in range(len(df_merged)):
for j in range(len(df_pe)):
if df_pe.TOn[j] < df_merged.ST[i] < df_pe.TOff[j]:
df_merged.EC[i] = df_pe.EC[j]
df_merged.ED[i] = df_uniqueal.ED[df_processed.EC[j]]
else:
df_merged.EC[i] = 0
df_merged.ED[i] = "NF"
РЕДАКТИРОВАТЬ Пожалуйста, обратитесь к изображению для ожидаемого результата и детского примера данных. ![Expected Output and Baby Example](https://i.stack.imgur.com/kPbZy.png)
Соответствующие столбцы выделены жирным шрифтом (обратите внимание, что номера столбцов могут отличаться, но имена столбцов в этом примере примера совпадают).