функция на предыдущих N строк во фрейме данных? - PullRequest
1 голос
/ 15 октября 2019

Мне нужно просмотреть каждую строку в кадре данных, глядя на столбец с именем «source_IP_address», и посмотреть на предыдущие 100 строк, чтобы я мог найти, есть ли строки с таким же «source_IP_address» и где другой столбецзаявляет «ошибка аутентификации».

Я написал некоторый код, который делает это, так как я не мог использовать Pandas, скользящий по двум столбцам. Проблема в том, что это не очень быстро, и я хочу знать, есть ли лучший способ сделать это?

функция, чтобы найти в предыдущем окне n строк, количество соответствующих значений оси, вместе с числомзначений атрибута в столбце атрибута

def check_window_for_match(df_w, window_size, axis_col, attr_col, attr_var):     

l = []
n_rows = df_w.shape[0]

for i in range(n_rows):

    # create a temp dataframe with the previous n rows including current row
    temp_df = df_w.iloc[i-(window_size-1):i+1]

    #print(temp_df.shape)

    # assign the current 'B' value as the axis variable
    current_value = df_w[axis_col].iloc[i]

    #print(current_value)
    #print(temp_df)

    # given the temp dataframe of previous window of n_rows, check axis matches against fails
    l_temp = temp_df.loc[(temp_df[axis_col] == current_value) & (temp_df[attr_col] == attr_var)].shape[0]
    l.append(l_temp)

return l

например

 df_test = pd.DataFrame({'B': [0, 1, 2, np.nan, 4, 6, 7, 8, 10, 8, 7], 'C': [2, 10, 'fail', np.nan, 6, 7, 8, 'fail', 8, 'fail', 9]})

df_test

matches_list = check_window_for_match(df_test, window_size=3, axis_col='B', attr_col='C', attr_var='fail')

вывод: [0, 0, 1, 0, 0, 0, 0, 1, 0, 2, 0]

Я хочу знать, правильный ли мой код и является ли это лучшим способом сделать это, или есть лучшая альтернатива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...