Как сопоставить два файла по символам и изменить один файл с помощью python?

теперь у меня есть два файла, file1 — это файл последовательности, а file2 — область привязки с оценкой предсказания, file1 выглядит так:

последовательность А последовательность B Вопрос Вопрос В В Вопрос Вопрос А А Б С С С А А Б С С С

другой file2 выглядит так:

идентификатор область счет последовательность А QABCA 0,6 последовательность B CSACS 0,4

теперь я хочу сопоставить оценку прогноза с последовательностью (более 100 последовательностей), результат, который я хочу:

последовательность А оценка последовательности A последовательность B оценка последовательности B Вопрос 0 Вопрос 0 В 0 В 0 Вопрос 0,6 Вопрос 0 А 0,6 А 0 Б 0,6 С 0,4 С 0,6 С 0,4 А 0,6 А 0,4 Б 0 С 0,4 С 0 С 0,4

Как я мог получить результат? Спасибо!

Я пытался использовать pd.str.match(), но он не может совпадать в несколько строк одновременно.

pandas здесь вам не поможет. Вы должны прочитать файл (ы) в строку, где вы можете выполнять простой поиск строк.
Tim Roberts 09.02.2023 08:48
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
1
63
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете попробовать что-то вроде этого

file1 = file1.reset_index()
file2 = file2.set_index("id")
for seq_id in file1.columns:
    region = file2.loc[seq_id, "region"]
    score = file2.loc[seq_id, "score"]
    seq = "".join(file1[seq_id].tolist())
    seq_start_index = seq.find(region)
    seq_stop_index = start_index + len(region) - 1
    file1[f"{seq_id} score"] = 0
    file1.loc[seq_start_index:seq_stop_index, f"{seq_id} score"] = score

Я бы сделал примерно то же самое, просто имейте в виду, что str.find возвращает только первое совпадение, вам может понадобиться re.finditer, чтобы получить несколько совпадений :)

mozway 09.02.2023 17:46

Другие вопросы по теме