2017-02-20 3 views
1

Ich habe csv Datei, mit Spaltennamen von: PH, K, Zn, S, Fe ... so weiter. Für jede Spalte Hasen gibt 3 verschiedene Arten von Ausgang, zum Beispiel:mit Python, wie 0, 1, 2 für ternäre Variablen geben?

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 

I-Werte von

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

geben möchten Wie man einen Code zu schreiben, das automatisch ist convert sauer = 0, Neutral = 1 , Alkalisch = 2?

+1

0 1 2 nicht binär ist ... 0, 1 ist binär –

+0

@ CedricDruck, Oh, Okay, Wie konvertiert man Niedrig, Mittel, Hoch in Bezug auf 0, 1, 2? ist es möglich? –

+1

Absicht oder Dateiformat ist nicht klar, bitte erarbeiten –

Antwort

1

Python bietet die Enum Klasse. Warum Sie Enums verwenden möchten, finden Sie unter here. In Ihrem Fall würde sie so etwas wie aussehen:

Code:

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

Demo-Code:

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

Produziert:

1 
2 

Demo Code2:

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

Produziert:

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

Kann ich 1,2,3, Zahlen-Ausgang für meine nächste Analyse mit enum verwenden? –

+1

Ja, der 'Wert' ist eine Zahl, siehe Beispiele. –

3

Ok so etwas wie

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

mit öffnen (ich muss url verwenden wo meine Datei gespeichert) als Datei: ??? –

+0

Ja, das ist der eigentliche Python-Code .. was ist die Frage? –

+0

your_file bedeutet mein Dateiname ist samplefile.csv, also habe ich mit open (samplefile.csv) als Datei verwenden:? –

Verwandte Themen