根据匹配条件返回数据帧的下一行

时间:2018-11-08 18:44:42

标签: python pandas dataframe indexing series

这是基于前一行中的匹配值获取下一行数据的最有效方法吗?似乎很麻烦,但是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 :(得分:1)

索引系列比索引数据帧更有效。

# 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]

在某些情况下,该算法效率不高。即使在数组开头附近满足条件,也总是需要完整的迭代。手动循环可以通过在满足条件时立即终止来解决此问题。

另请参阅:Efficiently return the index of the first value satisfying condition in array