Я пытаюсь
file1:
#query_name KEGG_KOs
10 PROKKA_00019 K00240
11 PROKKA_00020 K00246
12 PROKKA_00022 K02887
file2:
Geneid Chr Count
PROKKA_00019 k141_1000050 102
PROKKA_00020 k141_1000050 132
PROKKA_00021 k141_1000054 36
file3 (желаемый результат):
Geneid KEGG_KOs Chr Count
PROKKA_00019 K00240 k141_1000050 102
PROKKA_00020 K00246 k141_1000050 132
Кажется, это правильный скрипт:
import pandas as pd
file1 = pd.read_csv('file1.txt', sep="\t")
file2= pd.read_csv('file2.txt', sep="\t")
file3= pd.merge(file1, file2, left_on='#query_name', right_on='Geneid').drop(['#query_name'],axis=1)
print(merged)
Однако он возвращает сообщение:
Traceback (most recent call last):
File "**FilePath**C", line 4, in <module>
merged = pd.merge(genes, counts, left_on='#query_name', right_on='Geneid').drop(['#query_name'],axis=1)
File "**FilePath**", line 61, in merge
validate=validate)
File "**FilePath**", line 551, in __init__
self.join_names) = self._get_merge_keys()
File "**FilePath**", line 871, in _get_merge_keys
lk, stacklevel=stacklevel))
File "**FilePath**", line 1382, in _get_label_or_level_values
raise KeyError(key)
KeyError: '#query_name'
Я думал, это может быть из-за пространства в начале файла1. Но удаление его и индексный столбец, созданный предыдущим сценарием DataFrame, ничего не изменили. Кто-нибудь знает, почему и как исправить? Любая помощь будет принята с благодарностью, приветствия.
Вы можете пропустить первую строку - заголовок CSV и установить новые столбцы имена от параметров names
в read_csv
, затем установите тот же столбец, как в file2
, поэтому drop
не надо:
file1 = pd.read_csv('file1.txt', sep="\t", skiprows=1, names=['Geneid','KEGG_KOs'])
print (file1)
Geneid KEGG_KOs
10 PROKKA_00019 K00240
11 PROKKA_00020 K00246
12 PROKKA_00022 K02887
file2= pd.read_csv('file2.txt', sep="\t")
file3= pd.merge(file1, file2, on='Geneid')
print(merged)
file1
если верните 2 столбца, заполненных правильными данными, как в моем ответе?
print (file1.columns.tolist())
?