python - Python/Pandas Dataframe - 根据标识符计算数据框中两个相距较远的行的差异
问题描述
我正在处理 python 中的数据框(主要是 pandas 和 numpy)。下面给出示例。
Name ID Guess Date Topic Delta
0 a 23 5 2019 1 (Person A's Guess in 2019 - Guess in 2018)
1 a 23 8 2018 1
2 c 7 7 2019 1 (Person C's Guess in 2019 - Guess in 2018)
3 c 7 4 2018 1
4 e 12 9 2018 1
5 a 23 3 2020 2
我想填充空列Delta,这只是同一主题的最后一次猜测和现在更新的猜测之间的差异。我遇到了麻烦,因为我需要保留主题和此人的 ID。
数据集相当大(> 1mio.条目),这就是为什么我的迭代它的方法在使用完整数据帧时确实会造成麻烦。
我以上述方式对数据框进行了排序,以便尝试使用 .shift(); 解决它 但是我想必须有一个解决方案而不对 df 进行排序,因为我有足够的标识符(ID、Date、Topic)。
for i in df.index:
if df['ID'].iloc[i] == test['ID'].iloc[i+1]:
df['Delta'].iloc[i+1] = df['Guess'].iloc[i+1] - test['Guess'].iloc[i]
else:
df['Delta'].iloc[i+1] = "NaN"
如果有人知道该问题的更有效(可能是矢量化)解决方案,我将不胜感激提示和帮助
解决方案
推荐阅读
- php - 使用 Google Translate API 时出错
- mongodb - 使用 ObjectId 的 mongodb 聚合查找
- performance - (Unity) Animator 表现不佳
- android - windowmanager 没有收到某些具有相同操作系统版本的设备的点击?
- javascript - 如何将文件从 React 应用程序上传到 azure 商店模拟器
- angular - 每个项目的列表视图中的角度多个本地引用
- r - 错误:-没有适用于“公式”类对象的“svm”方法-
- php - 在本地 Mac 上编译 php-solr 失败
- javascript - jquery在树中查找下一个/上一个
- google-sheets - 谷歌电子表格:无需身份证明的不同权利