Назовите столбец, а затем назовите элементы с именем вместо индекса - PullRequest
0 голосов
/ 25 октября 2009

У меня есть список столбцов, которые я буду анализировать. Вместо того, чтобы обращаться к конкретному индексу, такому как data [1] [2], я хотел бы присвоить имя столбцу, а затем выполнить цикл по строкам столбцов для различных задач. Как мне присвоить имя столбцу, а затем это правильный формат для ссылки на него?

for x in range (len(data)):  
    if [column_name][x] .... 

Ответы [ 3 ]

3 голосов
/ 25 октября 2009

Существует множество способов сделать это. Если вы знаете связь между именами и столбцами во время написания своего кода, самый простой способ на данный момент - это:

for row in data:
   (foo, bar, baz, bat) = row

... при условии, что вам не нужно обновлять rowdata).

Если вам нужно обновить строку, копирование значений в переменные не будет работать. Вам нужно манипулировать элементами через их индексы. В этом случае подход Авиральда самый простой:

(foo, bar, baz, bat) = range(4)
for row in data:
   row[foo] = row[bar]

Если вы хотите сослаться на столбцы с помощью строки , содержащей их имя, вам необходимо скопировать строку в словарь, ключом которого является имя столбца. Затем, когда вы закончите манипулировать словарем, вам нужно обновить исходный список или заменить его новым (что и делает этот код):

columns = ("foo", "bar", "baz", "bat")
for i in range(len(data)):
   d = dict(zip(columns, data[i]))
   d["foo"] = d["bar"]
   data[i] = [d[col] for col in columns]
2 голосов
/ 25 октября 2009

Самый простой способ использовать имена вместо целых чисел для доступа к вашим данным - это использовать словарь

data = {'pig':[1, 2], 'cow':[3, 4], 'dog':[5,6]}

if data in range(2):
    if data['dog'][1]==4:...

Есть и другие способы. Например, вы можете создать класс и переопределить __getitem__; или вы можете просто присвоить имена переменных номерам столбцов в двумерном массиве, например dog=2 и т. д .; все зависит от того, что именно вы хотите сделать.

0 голосов
/ 25 октября 2009

Я считаю, что вы хотите сохранить столбец в переменной и затем ссылаться на него, вместо того, чтобы всегда использовать нижний индекс. Достаточно просто:

varName=data[columnName]

Для последовательного доступа к этому столбцу, varName[rowName] должен выполнить трюк

...