python - 想要使用 python 或 pyspark 计算 2 个不同行的值的差异
问题描述
每个人:
所以我在python中有这个列表类型对象:
[[10, 542.5354710621561],
[200, 11.802396794545745],
[700, 1.561175174358397],
[2000, 0.20926429043267342],
[10, 1107.0197845783787],
[200, 24.2886201681616],
[700, 3.1771001799962972],
[2000, 0.4405625905369205]]
我需要做的是按组循环并计算200-10和11.802-542.535的差异。然后,计算700-200和1.561-11.802。最后,计算2000-700和0.209-1.561。我必须为第二组做同样的事情。
我想要的输出是:
{ID_10000_10_200: float_value_here, ID_10000_200_700: float_value_here, ID_10000_700_2000: float_value_here, ID_20000_10_200: float_value_here, ID_20000_200_700: float_value_here, ID_20000_700_2000: float_value_here}
你能建议实现这一目标的最佳方法吗?谢谢!
解决方案
你可以试试这个:
nums_list = [[10, 542.5354710621561],
[200, 11.802396794545745],
[700, 1.561175174358397],
[2000, 0.20926429043267342],
[10, 1107.0197845783787],
[200, 24.2886201681616],
[700, 3.1771001799962972],
[2000, 0.4405625905369205]]
nums_list = [nums_list[i:i + 4] for i in range(0, len(nums_list), 4)]
final_diffs_object = {}
for y in range(len(nums_list)):
for x in range(1, len(nums_list[y])):
diff = nums_list[y][x][0] - nums_list[y][x - 1][0]
diff2 = nums_list[y][x][1] - nums_list[y][x - 1][1]
final_diff = diff - diff2
print(final_diff)
final_diffs_object["ID" + "_" + str((y+1) * 10000) + "_" + str(nums_list[y][x - 1][0]) + "_" + str(nums_list[y][x][0])] = final_diff
print(final_diffs_object)
样本输出:
{'ID_10000_10_200': 720.7330742676104, 'ID_10000_200_700': 510.24122162018733, 'ID_10000_700_2000': 1301.3519108839257, 'ID_20000_10_200': 1272.7311644102172, 'ID_20000_200_700': 521.1115199881654, 'ID_20000_700_2000': 1302.7365375894594}
推荐阅读
- httpcontext - ihttpcontextaccessor.httpcontext.user.findfirst(claimtypes.nameidentifier).value 为空
- excel - 创建一个输入数量未知的函数
- google-drive-api - Google Add-on 脚本在调用 DriveApp getFolderById 或 getFileById 时引发服务器错误
- c++ - 这个临时对象什么时候被销毁?在进入函数之前还是在函数返回之后?
- c - 理解树的结构
- c++ - glCullFace 工作不正常,你有答案吗?
- python - 如何将在 tkinter 中上传的图像放入函数中?
- sql - Oracle如何仅使用order by子句计算运行总数?
- python-3.x - 您如何修复 selenium 中的“元素不可交互”异常?
- angular - mat-toolbar 无法在移动设备上正确显示