Фильтрация фрейма данных pandas между датами, расположенными в другом фрейме данныхPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Фильтрация фрейма данных pandas между датами, расположенными в другом фрейме данных

Сообщение Anonymous »

Предположим, у меня есть два фрейма данных pandas: первый фрейм данных с некоторыми данными (отраженными в столбцах Col1 и Col2 в примере ниже) как по коду, так и по времени.
Второй фрейм данных с подробным описанием набора границ дат. Идея состоит в том, чтобы исключить любые строки (в df_table), дата которых находится между любыми границами (в df_dates). Каждый код имеет одну или несколько (и разных) границ или может не иметь границ вообще.
Приведенный ниже код работает хорошо и правильно выполняет задачу, но это занимает слишком много времени (первый кадр данных df_table имеет несколько миллионов строк).

Код: Выделить всё

import pandas as pd
import numpy as np

def filter_date(main_table, table_dates):

idx = table_dates.Code == main_table.Code
table_dates = table_dates.loc[idx]
filtering = (table_dates['Start Date'] = main_table.Timestamp)

return filtering.any()

# Example below
df_table = pd.DataFrame({'Code':['A', 'A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B', 'C', 'C'], 'Timestamp':[1,2,3,4,5,6,1,2,3,4,5,6,1,2], 'Col1':np.arange(14), 'Col2':np.arange(14)})
df_dates = pd.DataFrame({'Code':['A', 'A', 'B'], 'Start Date':[1, 5, 1], 'End Date':[2, 6, 3]})

df_table['Exclude Date'] = df_table.apply(lambda x: filter_date(x, df_dates), axis=1)
df_table = df_table[df_table['Exclude Date'] == False]

print(df_table)
Есть ли более разумный способ сделать это и избежать этого .apply()?

Подробнее здесь: https://stackoverflow.com/questions/791 ... -dataframe
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»