python - 合并来自包含相同列的两个文件的数据 - Python
问题描述
我正在尝试
文件1:
#query_name KEGG_KOs
10 PROKKA_00019 K00240
11 PROKKA_00020 K00246
12 PROKKA_00022 K02887
文件2:
Geneid Chr Count
PROKKA_00019 k141_1000050 102
PROKKA_00020 k141_1000050 132
PROKKA_00021 k141_1000054 36
文件 3(所需的输出):
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'
我在想可能是因为 file1 开头的空间。但是删除它和以前的数据框脚本创建的索引列并没有改变任何东西。任何人都有关于为什么或如何解决的任何线索?任何帮助将不胜感激,干杯。
解决方案
您可以跳过 csv 的第一行 - 标题并通过参数names
in设置新列名称read_csv
,然后设置与 in 相同的列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)
推荐阅读
- java - CDI 1.1:@Observes @Initialized(TransactionScoped.class) 应该工作吗?
- java - 类名必须在方法之前,必须是 MatcherAssert.assertThat() 而不仅仅是 assertThat()?
- mysql - 如何将 3 个表合并为一个,这些表具有第四个表的外键?
- php - 在 Mysql Date 中转换 datepicker - PHP
- kubernetes - 将入口部署为在 raspberrypi kubernetes 集群上的端口 80 上侦听的恶魔集需要什么
- sql - 缩放运算符 (*) 在 PostgreSQL 中如何工作?
- python - 安装pygame的问题
- java - 使用 Liquibase 休眠 @ManyToOne 和 @OneToMany
- javascript - 使用 POST 方法的 AJAX 请求不起作用
- python - 如何使用 Python Selenium 使用多列的条件有条件地从表中单击链接?