2017-02-20 58 views
1

我有csv文件,列名爲:PH,K,Zn,S,Fe ...等。對於每一列有野兔3種不同類型的輸出,例如:使用python如何給0,1,2作三元變量?

PH  S  Zn  Fe   Cu Mn 
Acidic Low Low  Medium High Medium 
Alkaline High Medium Medium High High 
Acidic Medium Low  Medium High High 
Neutral High Low  Medium High High 
Acidic Low Low  Medium High High 
Acidic Low Low  Medium High High 
Acidic Medium Medium Medium High High 

我想給的

Acidic = 0, Neutral = 1, Alkaline = 2 
Low = 0, Medium = 1, High = 2 

值如何寫一個代碼,其是自動轉換的酸性= 0,中性= 1 ,鹼性= 2?

+1

0 1 2不是二進制... 0,1是二進制 –

+0

@ CedricDruck,哦,好吧,如何轉換低,中,高0,1,2的?可能嗎? –

+1

意圖或文件格式不清楚,請詳細說明 –

回答

1

Python提供了Enum類。爲什麼要使用枚舉包含here。在你的情況下,他們看起來是這樣的:

代碼:

from enum import Enum 
PH = Enum('PH', 'Acidic Neutral Alkaline') 
Concentration = Enum('Concentration', 'Low Medium High') 

演示代碼:

print(PH['Acidic'].value) 
print(Concentration['Medium'].value) 

產地:

1 
2 

演示代碼2:

for i in range(1, 4): 
    ph = PH(i) 
    concentration = Concentration(i) 
    print(ph, ph.name, ph.value) 
    print(concentration, concentration.name, concentration.value) 

產地:

PH.Acidic Acidic 1 
Concentration.Low Low 1 
PH.Neutral Neutral 2 
Concentration.Medium Medium 2 
PH.Alkaline Alkaline 3 
Concentration.High High 3 
+0

我可以使用1,2,3,數字輸出爲我的下一次使用枚舉分析? –

+1

是的,'價值'是一個數字,看例子。 –

3

好了,所以像

dicts = { 
    'PH' : {'Acidic': 0, 'Alkaline': 1, 'Neutral': 2}, 
    'S': {'Low': 0, 'High': 1, 'Medium': 2}, 
    # etc 
} 
with open(your_file) as file: 
    table = [] 
    reader = csv.DictReader(file) 
    for row in reader: 
     new_row = {key: dicts[key][value] for (key, value) in row.items()} 
     table.append(new_row)    
+0

與打開(我必須使用URL我的文件存儲)作爲文件:??? –

+0

是的,這就是實際的Python代碼。問題是什麼? –

+0

your_file表示我的文件名是samplefile.csv,所以我使用open(samplefile.csv)作爲文件:? –

相關問題