我有以下列表列表,其中最后一个元素是该列表中组合的计数。
[['OY', 'G1', 'A1', 'R3', '', 9L],
['OY', 'G1', 'A1', 'R12', '', 30L],
['OY', 'G1', 'A2', 'R3', '', 12L],
['OY', 'G1', 'A2', 'R12', '', 70L],
['OY', 'G1', 'A3', 'R3', '', 14L],
['OY', 'G1', 'A3', 'R12', '', 67L],
['OY', 'G2', 'A1', 'R3', '', 12L],
['OY', 'G2', 'A1', 'R12', '', 27L],
['OY', 'G2', 'A2', 'R3', '', 16L],
['OY', 'G2', 'A2', 'R12', '', 61L],
['OY', 'G2', 'A3', 'R3', '', 21L],
['OY', 'G2', 'A3', 'R12', '', 69L],
['OY', 'G1', 'A4', 'R3', 'A5', 23L],
['OY', 'G1', 'A4', 'R3', 'A6', 7L],
['OY', 'G1', 'A4', 'R12', 'A5', 94L],
['OY', 'G1', 'A4', 'R12', 'A6', 49L],
['OY', 'G2', 'A4', 'R3', 'A5', 29L],
['OY', 'G2', 'A4', 'R3', 'A6', 14L],
['OY', 'G2', 'A4', 'R12', 'A5', 85L],
['OY', 'G2', 'A4', 'R12', 'A6', 52L],
['ON', 'G1', 'A1', 'R3', '', 6L],
['ON', 'G1', 'A1', 'R12', '', 22L],
['ON', 'G1', 'A2', 'R3', '', 10L],
['ON', 'G1', 'A2', 'R12', '', 54L],
['ON', 'G1', 'A3', 'R3', '', 13L],
['ON', 'G1', 'A3', 'R12', '', 56L],
['ON', 'G2', 'A1', 'R3', '', 10L],
['ON', 'G2', 'A1', 'R12', '', 23L],
['ON', 'G2', 'A2', 'R3', '', 14L],
['ON', 'G2', 'A2', 'R12', '', 47L],
['ON', 'G2', 'A3', 'R3', '', 19L],
['ON', 'G2', 'A3', 'R12', '', 55L],
['ON', 'G1', 'A4', 'R3', 'A5', 22L],
['ON', 'G1', 'A4', 'R3', 'A6', 7L],
['ON', 'G1', 'A4', 'R12', 'A5', 78L],
['ON', 'G1', 'A4', 'R12', 'A6', 47L],
['ON', 'G2', 'A4', 'R3', 'A5', 25L],
['ON', 'G2', 'A4', 'R3', 'A6', 12L],
['ON', 'G2', 'A4', 'R12', 'A5', 80L],
['ON', 'G2', 'A4', 'R12', 'A6', 46L]]
如果计数不是基于模式(最后一个元素小于20),它应该与其对应物结合。
例如,
['OY', 'G1', 'A1', 'R3', '', 9L],
['OY', 'G1', 'A1', 'R12', '', 30L]
应该成为
['OY', 'G1', 'A1', 'R123', '', 39L]
类似地,
['OY', 'G1', 'A4', 'R3', 'A5', 23L],
['OY', 'G1', 'A4', 'R3', 'A6', 7L]
将是
['OY', 'G1', 'A4', 'R3', 'A56', 30L].
无论何处计数> 20,它应该保持原样。
这里A5或A6计数< 20,它将被合并.R3和R12的案例。
最终预期产出是:
[['OY', 'G1', 'A1', 'R123', '', 39L],
['OY', 'G1', 'A2', 'R123', '', 82L],
['OY', 'G1', 'A3', 'R123', '', 81L],
['OY', 'G2', 'A1', 'R123', '', 49L],
['OY', 'G2', 'A2', 'R133', '', 77L],
['OY', 'G2', 'A3', 'R3', '', 21L],
['OY', 'G2', 'A3', 'R12', '', 69L],
['OY', 'G1', 'A4', 'R3', 'A56', 30L],
['OY', 'G1', 'A4', 'R12', 'A5', 94L],
['OY', 'G1', 'A4', 'R12', 'A6', 49L],
['OY', 'G2', 'A4', 'R3', 'A56', 43L],
['OY', 'G2', 'A4', 'R12', 'A5', 85L],
['OY', 'G2', 'A4', 'R12', 'A6', 52L],
['ON', 'G1', 'A1', 'R123', '', 28L],
['ON', 'G1', 'A2', 'R123', '', 64L],
['ON', 'G1', 'A3', 'R123', '', 69L],
['ON', 'G2', 'A1', 'R123', '', 33L],
['ON', 'G2', 'A2', 'R123', '', 61L],
['ON', 'G2', 'A3', 'R123', '', 74L],
['ON', 'G1', 'A4', 'R3', 'A56', 29L],
['ON', 'G1', 'A4', 'R12', 'A5', 78L],
['ON', 'G1', 'A4', 'R12', 'A6', 47L],
['ON', 'G2', 'A4', 'R3', 'A56', 37L],
['ON', 'G2', 'A4', 'R12', 'A5', 80L],
['ON', 'G2', 'A4', 'R12', 'A6', 46L]]
请指导如何有效地实现这一目标。
EDIT1:
以下是我提出的建议:
(用-999替换空字符串)
for indx,k in enumerate(process_list):
if k[3] == 'R3' and k[4] == '-999' and k[5] < 20:
process_list[indx][3] = 'R123'
if (indx+1) <= len(process_list):
process_list[indx+1][3] = 'R123'
if k[3] == 'R12' and k[4] == '-999' and k[5] < 20:
process_list[indx][3] = 'R123'
if (indx-1) >= 0:
process_list[indx-1][3] = 'R123'
if k[4] == 'A5' and k[5] < 20:
process_list[indx][4] = 'A56'
if (indx+1) <= len(process_list):
process_list[indx+1][4] = 'A56'
if k[4] == 'A6' and k[5] < 20:
process_list[indx][4] = 'A56'
if (indx-1) >= 0:
process_list[indx-1][4] = 'A56'
final_df = pd.DataFrame(process_list,columns = ['olflag','gflag','aflag','rflag','apflag','count'])
df_grouped = final_df.groupby(['olflag','gflag','aflag','rflag','apflag']).sum().reset_index()
df_grouped.values.tolist()