read_csv конвертеры для неизвестных столбцов - PullRequest
5 голосов
/ 07 марта 2012

Я пытаюсь прочитать CSV-файл, который содержит несколько значений в каждой ячейке, и я хочу закодировать их в один отформатированный байт int, который будет храниться в ячейке панд (например, (1, 1) -> 771) , Для этого я бы хотел использовать параметр преобразователей функции read_csv. Проблема заключается в том, что я не знаю имен столбцов перед этим, и значение, которое должно быть передано конвертерам, должно быть диктовкой с именами столбцов в качестве ключей. На самом деле я хочу преобразовать все столбцы с одинаковой функцией преобразования. Для этого было бы лучше написать:

read_csv(fhand, converter=my_endocing_function)

чем:

read_csv(fhand, converters={'col1':my_endocing_function,
                            'col2':my_endocing_function,
                            'col3':my_endocing_function,})

Возможно ли что-то подобное? Прямо сейчас, чтобы решить проблему, я делаю:

dataframe = read_csv(fhand)
enc_func = numpy.vectorize(encoder.encode_genotype)
dataframe = dataframe.apply(enc_func, axis=1)

Но я думаю, что этот подход может быть менее эффективным. Кстати, у меня есть подобные сомнения с форматерами, используемыми методом to_string.

1 Ответ

3 голосов
/ 08 марта 2012

Вы можете передавать целые числа (0, 1, 2) вместо имен. Из строки документации:

converters : dict. optional
    Dict of functions for converting values in certain columns. Keys can either
    be integers or column labels
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...