繁体   English   中英

使用第三个csv文件作为映射从另一个csv文件中的一个csv文件中查找值

[英]Looking up values from one csv-file in another csv-file, using a third csv-file as map

我不太清楚如何提出这个问题,欢迎提出改善标题的建议。

我有三个文件: e_data.csvt_data.csve2d.csv 我想将e_idt_idgene_namevalue合并到一个文件中,如desired_result.csv所示 天真的方法如下:

  1. 对于e_data.csv中的每一行,提取e_idvalue
  2. 检查e2t.csv中对应于给定e_id t_id
  3. 检查t_data.csv为此gene_name对应于给定t_id
  4. 将它们全部合并到一个文件中。

请查看以下示例以了解我要实现的目标:

e_data.csv:

   e_id  value
     1    110
     2    240
     3    370

e2t.csv:

   e_id  t_id
     1    10
     2    24
     3    32

t_data.csv:

  t_id gene_name
   10     Gene1
   24     Gene2
   32     Gene3

wanted_result.csv:

  gene_name t_id e_id value
     Gene1   10    1   110
     Gene2   24    2   240
     Gene3   32    3   370

使用哪种工具或语言没有限制,但是我更喜欢使用Python,因为这是我最熟悉的工具。 R也可以是一个选择。 我已经用纯Python实现了一个解决方案,但是数据集相当大,我希望Pandas或Numpy之类的东西可以加快速度。 谢谢!

使用read_csv加载所有csv之后,只要列名一致,就可以迭代merge它们:

In [149]:
merged = t_data.merge(e2t.merge(e_data))
merged

Out[149]:
   t_id gene_name  e_id  value
0    10     Gene1     1    110
1    24     Gene2     2    240
2    32     Gene3     3    370

上面的方法默认情况下会尝试在匹配的列名称上合并并执行内部合并,因此列值必须在lhs和rhs上匹配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM