2017-08-08 81 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)