вернуть следующий ряд данных в соответствии с условием соответствия - PullRequest
0 голосов
/ 08 ноября 2018

Является ли это наиболее эффективным способом получения следующей строки данных на основе совпадающего значения в предыдущей строке? Это кажется ужасно громоздким, но тип Int64Index, кажется, не очень хорошо играет.

df_of_urls = {'ID': [100,101], 'URL': ['https://www.firsturl.com','https://www.secondurl.com']}
df_of_urls = pd.DataFrame.from_dict(df_of_urls)

prior_url = 'https://www.firsturl.com'

next_url = df_of_urls.iloc[df_of_urls[df_of_urls['URL']==prior_url ].index+1,1].values[0]

1 Ответ

0 голосов
/ 08 ноября 2018

Индексирование ряда более эффективно, чем индексирование кадра данных.

# Index using iat accessor
next_url = df_of_urls['URL'].iat[np.where(df_of_urls['URL']==prior_url)[0][0] + 1]

# Index using NumPy array
next_url = df_of_urls['URL'].values[np.where(df_of_urls['URL']==prior_url)[0][0] + 1]

Этот алгоритм неэффективен для определенных случаев. Полная итерация всегда требуется, даже если условие выполняется в начале массива. Ручной цикл может решить эту проблему путем немедленного завершения при выполнении условия.

См. Также: Эффективно вернуть индекс первого значения, удовлетворяющего условию в массиве .

...