2017-02-20 19 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, Oh, Okay, Как конвертировать Low, Medium, High с точки зрения 0, 1, 2? Является ли это возможным? –

+1

Непонятно намерение или формат файла, пожалуйста, уточните –

ответ

1

Python предоставляет класс Enum. Почему вы хотите использовать Enums, покрывается 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 

Demo Кодекса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) в качестве файла:? –