由于内部存在某些特定关键字,如何删除列表行。
这是为了重新排列RF测试报告表格。 过去,我尝试通过选择列表索引来删除该行, 但是,这似乎不是一个聪明的方法。
list_1 = [['', '', 'Channel', 'Freq. (MHz)', 'Link Speed', 'Test Item', 'Lower Limit', 'Upper Limit', 'Measured', 'Unit', 'Status']
['', '', '1', '2442', 'MCS6', 'Burst Power (Average)', '-100', '30', '12.09', 'dBm', 'PASS']
['', '', '1', '2442', 'MCS6', 'EVM All Carriers (Average)', '', '-27', '-31.56', 'dB', 'PASS']
['', '', '1', '2442', 'MCS6', 'EVM Data Carriers (Average)', '', '-27', '-31.45', 'dB', 'PASS']
['', '', '1', '2442', 'MCS6', 'EVM Pilot Carriers (Average)', '', '-8', '-33.38', 'dB', 'PASS']
['', '', '1', '2442', 'MCS6', 'Center Freq. Error (Average)', '-60300', '60300', '663.96', 'Hz', 'PASS']
['', '', '1', '2412', 'MCS7', 'Burst Power (Average)', '-100', '30', '12.29', 'dBm', 'PASS']
['', '', '1', '2412', 'MCS7', 'EVM All Carriers (Average)', '', '-27', '-31.16', 'dB', 'PASS']
['', '', '1', '2412', 'MCS7', 'EVM Data Carriers (Average)', '', '-27', '-31.15', 'dB', 'PASS']
['', '', '1', '2412', 'MCS7', 'EVM Pilot Carriers (Average)', '', '-8', '-33.18', 'dB', 'PASS']
['', '', '1', '2412', 'MCS7', 'Center Freq. Error (Average)', '-60300', '60300', '663.16', 'Hz', 'PASS']
['', '', '1', '2412', 'MCS7', 'Burst Power (Average)', '-100', '30', '12.09', 'dBm', 'PASS']
['', '', '1', '2412', 'MCS7', 'EVM All Carriers (Average)', '', '-27', '-31.56', 'dB', 'PASS']
['', '', '1', '2412', 'MCS7', 'EVM Data Carriers (Average)', '', '-27', '-31.45', 'dB', 'PASS']
['', '', '1', '2412', 'MCS7', 'EVM Pilot Carriers (Average)', '', '-8', '-33.38', 'dB', 'PASS']
['', '', '1', '2412', 'MCS7', 'Center Freq. Error (Average)', '-60300', '60300', '663.96', 'Hz', 'PASS']
['', '', '1', '2412', 'MCS7', 'Burst Power (Average)', '-100', '30', '12.02', 'dBm', 'PASS']
['', '', '1', '2412', 'MCS7', 'EVM All Carriers (Average)', '', '-27', '-32.08', 'dB', 'PASS']
['', '', '1', '2412', 'MCS7', 'EVM Data Carriers (Average)', '', '-27', '-31.98', 'dB', 'PASS']
['', '', '1', '2412', 'MCS7', 'EVM Pilot Carriers (Average)', '', '-8', '-33.56', 'dB', 'PASS']
['', '', '1', '2412', 'MCS7', 'Center Freq. Error (Average)', '-60300', '60300', '763.52', 'Hz', 'PASS']]
burstpower_i = [i for i,row in enumerate(list_1) if 'Burst Power (Average)' in row]
burstpower_iend = burstpower_i[-1] #Keep the last result to cover the previous ones
reindex = []
gap = burstpower_i[1] - burstpower_i[0]
for i,v in enumerate(burstpower_i):
if (list_1[-1][3] == list_1[v][3]) and (list_1[-1][4] == list_1[v][4]):
continue
reindex.append(v)
for i in reindex:
list_s = list_1[i:i+gap]
list_end = list_1[burstpower_iend-gap:burstpower_iend]
list_s.extend(list_end)
我希望输出结果表明MCS7的最后结果可以覆盖以前的结果。
['', '', 'Channel', 'Freq. (MHz)', 'Link Speed', 'Test Item', 'Lower Limit', 'Upper Limit', 'Measured', 'Unit', 'Status']
['', '', '1', '2412', 'MCS6', 'Burst Power (Average)', '-100', '30', '12.09', 'dBm', 'PASS']
['', '', '1', '2412', 'MCS6', 'EVM All Carriers (Average)', '', '-27', '-31.56', 'dB', 'PASS']
['', '', '1', '2412', 'MCS6', 'EVM Data Carriers (Average)', '', '-27', '-31.45', 'dB', 'PASS']
['', '', '1', '2412', 'MCS6', 'EVM Pilot Carriers (Average)', '', '-8', '-33.38', 'dB', 'PASS']
['', '', '1', '2412', 'MCS6', 'Center Freq. Error (Average)', '-60300', '60300', '663.96', 'Hz', 'PASS']
['', '', '1', '2412', 'MCS7', 'Burst Power (Average)', '-100', '30', '12.02', 'dBm', 'PASS']
['', '', '1', '2412', 'MCS7', 'EVM All Carriers (Average)', '', '-27', '-32.08', 'dB', 'PASS']
['', '', '1', '2412', 'MCS7', 'EVM Data Carriers (Average)', '', '-27', '-31.98', 'dB', 'PASS']
['', '', '1', '2412', 'MCS7', 'EVM Pilot Carriers (Average)', '', '-8', '-33.56', 'dB', 'PASS']
['', '', '1', '2412', 'MCS7', 'Center Freq. Error (Average)', '-60300', '60300', '763.52', 'Hz', 'PASS']
答案 0 :(得分:0)
将所有数据列表放入集合中,以确保消除重复项。
s = set()
s.add(tuple(["", "123", "1234"]))
s.add(tuple(["", "123", "1234"]))
s.add(tuple(["", "abc", "abcd"]))
,依此类推。最后,集合中的所有内容都是唯一的。
list(s) == [("", "123", "1234"), ("", "abc", "abcd")] # a list of tuples
map(list, list(s)) == [["", "123", "1234"], ["", "abc", "abcd"]] # converted to a list of lists
NB。您需要将元组放入集合而不是列表中的原因是,因为元组是可哈希的。 set对象利用该属性来发现重复项。
答案 1 :(得分:0)
pandas是一款不错的软件,可以有效处理复杂数据。检查一下:
import pandas as pd
data = pd.DataFrame(list_1)
data = data.drop_duplicates([4, 5])
new_list = data.values.tolist()