首页 > 解决方案 > 想要使用 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-1011.802-542.535的差异。然后,计算700-2001.561-11.802。最后,计算2000-7000.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}

你能建议实现这一目标的最佳方法吗?谢谢!

标签: pythonlistarraylistpyspark

解决方案


你可以试试这个:

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}

推荐阅读