У меня есть набор данных, содержащий строки в 1 столбце, в котором я хочу сосчитать наиболее распространенный символ и поместить этот символ в новый столбец.Я также хочу другой столбец, который содержит пропорцию строки, которую представляет символ.
Метод, который я хочу использовать для каждой строки, выглядит следующим образом:
sequence = 'ACCCCTGGC'
char_i_want = collections.Counter(sequence).most_common(1)[0] # for the character
value_i_want = collections.Counter(sequence).most_common(1)[1] / len(sequence) # for the proportion
Я понимаю результат most_commonявляется кортежем, но когда я пытаюсь сделать это в оболочке Python, мне нужно сделать collections.Counter(sequence).most_common(1)[0][0]
, чтобы получить доступ к 0-му элементу кортежа, кортеж является 0-м элементом возвращаемого списка.Когда я попытался реализовать это, оно все еще не работало.
Вот как я пытался это сделать:
def common_char(sequence):
return Counter(sequence).most_common(1)[0][0]
def char_freq(sequence):
return Counter(sequence).most_common(1)[0][1] / len(sequence)
data = pd.read_csv('final_file_noidx.csv')
data['most_common_ref'] = data['REF'].map(lambda x: common_char(x))
data['most_common_ref_frac'] = data['REF'].map(lambda x: char_freq(x))
Меня приветствует это сообщение об ошибке: TypeError: 'float' object is not iterable