Использование длины строки в каждой строке столбца df в качестве аргумента в функции - PullRequest
0 голосов
/ 02 октября 2018

У меня серьезные проблемы с этим!Предположим, у меня есть кадр данных pandas, подобный следующему:

Name    LeftString    RightString
nameA   AATCGCTGCG    TGCTGCTGCTT
nameB   GTCGTGBAGB    BTGHTAGCGTB
nameC   ABCTHJKLAA    BFTCHHFCTSH
....

У меня есть функция, которая принимает следующие аргументы:

def localAlign(minAlignment, names, string1, string2):
    # do something great

В моей функции minAlignment представляет собой целое число, имена,string1 и string2 - столбцы данных, используемые функцией в качестве объектов списка.

Затем я вызываю функцию на более позднем этапе:

left1_2_compare = localAlign(12, df['Name'], df['LeftString'], df['RightString'])

Моя функция выполняется без проблем, но 12 передается как жестко закодированное значение или как аргумент sys,но я бы предпочел, чтобы это была переменная, которая на 60% длиннее df ['LeftString'].

Так что я попытался в этом отношении передать вычисление, которое вернуло быint к аргументу функции:

left1_2_compare = localAlign((int(len(df['LeftString'])*0.6)), 
                             df['Name'], df['LeftString'],
                             df['RightString'])

Интересно то, что код не дает ошибок и не возвращает ошибок, он просто ничего не выводит для этого значения (выходной файл для этого пустчасть).В остальном данные получены и хороши.

Мы видим, что df был определен до вызова функции, есть ли способ использовать длину строки в строке1 ... rown в качестве входного целого числа для функции, не определяя ее внутри функции?

1 Ответ

0 голосов
/ 02 октября 2018

Нужна серия, созданная len, кратная mul и приведенная к целым числам astype:

left1_2_compare = localAlign((df['LeftString'].str.len().mul(.6)).astype(int), 
                             df['Name'], 
                             df['LeftString'], 
                             df['RightString'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...