2017-08-08 82 views
0

我有大量数据集,我正在逐行分析。示例数据行将是100 0 0 100 1 0 100 2 0 100 3 0 100 4 0。这里,100后面的两个条目包含关于数据的信息(译成英文)。因此,在100之后的第一个条目总是根据其值(0,1,2,3或4)进行解密,并且在100之后的第二个条目总是基于条目1的值被解密(即如果条目1 = 0条目2 = ____,或者条目1 = 1条目2 = _____等等)。不同列表长度索引的Python变量分配

我已经将数据行作为列表存储在data中。在100之后总是有两个条目,但我无法确定在给定行中会出现多少次100 - 示例数据行有5个100实例,但其他行有任意数量的实例。

目前代码:(无视column,这是我用来建立data原始列表)

data = [num for num in column[2:] if num != 100] 
entry1 = data[1] 
entry2 = data[2] 
info_dict1 = {0: 'absolute', 1: 'minimum', 2: 'maximum', 3: 'median', 4: 'mode'} 
info1 = info_dict1.get(entry1, 'not found') 
info_dict2 = {'absolute': 'value', 'minimum': 'increase', 'maximum': 'increase'} 
info2 = info_dict2.get(info1, 'not found') 
print(info1, info2) 

我无法得到这个用的100未知出现数据线工作。我也在努力寻找一个准确的Pythonic解决方案。

对于提供我希望得到的结果看起来像示例数据: absolute value minimum increase maximum increase median not found mode not found

这是重要的是下面的100项并不总是有序像提供的范例线(即第一个条目可以是任何数字0-4,第二个条目将根据第一个条目而变化)

回答

1

请尝试此解决方案以获得您期望的答案。

column = [100, 0, 0, 100, 1, 0, 100, 2, 0, 100, 3, 0, 100, 4, 0] 
data = [num for num in column if num != 100] 
info_dict1 = {0: 'absolute', 1: 'minimum', 2: 'maximum', 3: 'median', 
4: 'mode'} 
info_dict2 = {'absolute': 'value', 'minimum': 'increase', 'maximum': 
'increase'} 
info1 = [] 

#Iterating the list in step of 2 
for item in data[::2]: 
    result = info_dict1.get(item, 'not found') 
    info1.append(result) 
    info1.append(info_dict2.get(result, 'not found')) 

print(info1)