Очень понятно и быстро вспоминаешь по таким видео. Такой вопрос: Есть две pandas таблицы, каждая содержит два столбца. В первой это время и сердечный ритм. Во второй - это время и систолическое давление. Напишите код, который создает третью таблицу, в которой для каждого замера давления в той же строке содержится время и значение ближайшего замера сердечного ритма, если он был сделан обязательно до замера давления и не раньше, чем за 15 минут.Это обязательный вопрос * Пример: df_hr = pandas.DataFrame({'time': [datetime(2022,1,1,7,40), datetime(2022,1,1,9,50), datetime(2022,1,1,10,1)], 'hr': [60, 90,100]}) df_bp = pandas.DataFrame({'time': [datetime(2022,1,1,10), datetime(2022,1,1,8)], 'bp': [140, 120]}) Ожидаемый результат: pandas.DataFrame({ 'time_hr': [datetime(2022,1,1,9,50)], 'hr': [90], 'time_bp': [datetime(2022,1,1,10)], 'bp': [140]
Камран, вот код, который ты спрашивал: # импортируем pandas import pandas as pd # задаем таблицу с сердечным ритмом, использовать функцию datetime необязательно (!) df_hr = pd.DataFrame({'time': ['2022-1-1 07:40', '2022-1-1 09:50', '2022-1-1 10:01'], 'hr': [60, 90,100]}) # задаем таблицу с систолическим давлением df_bp = pd.DataFrame({'time': ['2022-1-1 10:00', '2022-1-1 8:00'], 'bp': [140, 120]}) # на этом шаге (!) конвертируем значения столбцов из строк в формат "дата и время" df_hr['time'] = pd.to_datetime(df_hr['time']) df_bp['time'] = pd.to_datetime(df_bp['time']) # создаем третью таблицу, куда мы будем записывать нужные нам записи df_result = pandas.DataFrame({'time_hr': [], 'hr': [], 'time_bp': [], 'bp': []}) # проходимся циклом по исходным двум таблицам # проходимся по каждой строке таблицы систолическим давлением for row_bp in df_bp.iterrows(): # проходимся по каждой строке таблицы с сердечным ритмом for row_hr in df_hr.iterrows(): # считаем разницу во времени между замерами систалического давления и сердечного ритма delta = row_bp[1][0] - row_hr[1][0] # если дельта больше 15 минут if delta >= datetime.timedelta(minutes=15): # то записываем результат в третью таблицу df_result = df_result.append({'time_hr': row_hr[1][0], 'hr': row_hr[1][1], 'time_bp': row_bp[1][0], 'bp': row_bp[1][1]},ignore_index=True) ВАЖНО: данный код записывает все замеры с дельтой больше 15 минут, то есть после данной обработки в результирующей таблице df_result необходимо будет найти минимальные значения, но это сделать не тяжело.
@@karpovcourses Добрый день. Полагаю, что о ссылке на статью о JOINах. Аня, в описании к видео информация, где искать статьи и материалы. А так, лови - habr.com/ru/post/448072/
Спасибо. Теперь всё понятно. До этого как вилами по воде.
Объяснили тему, над которой я страдал 1,5 часа, спасибо вам большое❤
Очень понятно и быстро вспоминаешь по таким видео. Такой вопрос:
Есть две pandas таблицы, каждая содержит два столбца. В первой это время и сердечный ритм. Во второй - это время и систолическое давление.
Напишите код, который создает третью таблицу, в которой для каждого замера давления в той же строке содержится время и значение ближайшего замера сердечного ритма, если он был сделан обязательно до замера давления и не раньше, чем за 15 минут.Это обязательный вопрос *
Пример:
df_hr = pandas.DataFrame({'time': [datetime(2022,1,1,7,40), datetime(2022,1,1,9,50), datetime(2022,1,1,10,1)], 'hr': [60, 90,100]})
df_bp = pandas.DataFrame({'time': [datetime(2022,1,1,10), datetime(2022,1,1,8)], 'bp': [140, 120]})
Ожидаемый результат:
pandas.DataFrame({
'time_hr': [datetime(2022,1,1,9,50)],
'hr': [90],
'time_bp': [datetime(2022,1,1,10)],
'bp': [140]
Камран, вот код, который ты спрашивал:
# импортируем pandas
import pandas as pd
# задаем таблицу с сердечным ритмом, использовать функцию datetime необязательно (!)
df_hr = pd.DataFrame({'time': ['2022-1-1 07:40', '2022-1-1 09:50', '2022-1-1 10:01'], 'hr': [60, 90,100]})
# задаем таблицу с систолическим давлением
df_bp = pd.DataFrame({'time': ['2022-1-1 10:00', '2022-1-1 8:00'], 'bp': [140, 120]})
# на этом шаге (!) конвертируем значения столбцов из строк в формат "дата и время"
df_hr['time'] = pd.to_datetime(df_hr['time'])
df_bp['time'] = pd.to_datetime(df_bp['time'])
# создаем третью таблицу, куда мы будем записывать нужные нам записи
df_result = pandas.DataFrame({'time_hr': [], 'hr': [], 'time_bp': [], 'bp': []})
# проходимся циклом по исходным двум таблицам
# проходимся по каждой строке таблицы систолическим давлением
for row_bp in df_bp.iterrows():
# проходимся по каждой строке таблицы с сердечным ритмом
for row_hr in df_hr.iterrows():
# считаем разницу во времени между замерами систалического давления и сердечного ритма
delta = row_bp[1][0] - row_hr[1][0]
# если дельта больше 15 минут
if delta >= datetime.timedelta(minutes=15):
# то записываем результат в третью таблицу
df_result = df_result.append({'time_hr': row_hr[1][0], 'hr': row_hr[1][1], 'time_bp': row_bp[1][0], 'bp': row_bp[1][1]},ignore_index=True)
ВАЖНО: данный код записывает все замеры с дельтой больше 15 минут, то есть после данной обработки в результирующей таблице df_result необходимо будет найти минимальные значения, но это сделать не тяжело.
А где ссылка? :)
а о какой ссылке речь?)
@@karpovcourses Добрый день.
Полагаю, что о ссылке на статью о JOINах.
Аня, в описании к видео информация, где искать статьи и материалы.
А так, лови - habr.com/ru/post/448072/
@@АртёмКатаев-ъ4и но там её нет)