python - 根据匹配条件返回下一行数据帧
问题描述
这是根据前一行中的匹配值获取下一行数据的最有效方法吗?它看起来非常繁琐,但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]
解决方案
索引系列比索引数据框更有效。
# 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]
该算法在某些情况下效率低下。即使在数组的开头附近满足条件,也始终需要完整的迭代。手动循环可以通过在满足条件时立即终止来解决此问题。
另请参阅:有效地返回数组中满足条件的第一个值的索引。
推荐阅读
- html - 如何获得具有直边框右上半径的矩形?
- rxjs - Rxjs:压缩两个长度不等的观察值
- javascript - 按下时更改本机文本的背景颜色
- android - 将配置添加为依赖项是一种令人困惑的行为,不建议这样做
- string - 打字稿:如何在接口中的字符串索引签名定义中引用属性名称
- python - 熊猫将时间序列数据列转换为列表列?
- excel - 插入、复制、删除麻烦
- ceph - ceph mds错误目录inode上的错误回溯并写入新文件崩溃
- python-3.x - 用漂亮的汤提取额外的数据
- swiftui - 使用 ForEach 创建视图,但如何让 onTapGesture 立即更新?