美文网首页精华文章收藏
两个文件两列匹配

两个文件两列匹配

作者: chaimol | 来源:发表于2019-03-28 20:57 被阅读2次

因工作中经常遇到在两个文件中匹配相同列的内容,用python3实现了。
参考链接
两个源文件格式在github

#!/bin/bash

#此脚本是实现玉米V4版本基因的功能注释
#gene_function.txt是对应的注释库文件
#out.csv是需要添加注释的文件
#输出文件为
#@author:chaimol@163.com

import pandas as pd
df1=pd.read_csv('gene_function.csv',encoding='utf-8)
df2=pd.read_csv('out.csv',encoding='utf-8')


#匹配相同内容的行,匹配到之后返回匹配到的行,未匹配到则不返回
index=df1['geneid'].isin(df2['geneid'])
outfile=df1[index]
outfile.to_csv('outfile.csv',index=False,encoding='utf-8')



#匹配相同内容的行,匹配到之后添加内容到右侧文件。为匹配到返回的是NA。
outer=pd.merge(df1,df2,how='right')
outer.to_csv('outer_function.csv',index=False,encoding='utf-8')

pandas这个包在安装时可能会出错,直接使用pip install 安装,具体参照官网。

在读取csv文件时,会经常报错。原因是csv的格式不是utf-8,用记事本打开该csv文件,调整下面的编码格式为utf-8.后缀名仍然是csv就可以了。

相关文章

  • 两个文件两列匹配

    因工作中经常遇到在两个文件中匹配相同列的内容,用python3实现了。参考链接两个源文件格式在github pan...

  • Linux命令之文件编辑 (二)

    Linux comm命令Linux comm命令用于比较两个已排过序的文件。 这项指令会一列列地比较两个已排序文件...

  • 常用命令(持续更新)

    处理文本常用单行命令,持续更新~1.awk 匹配两个文件内容### Linux Shell中使用awk完成两个文件...

  • paste命令

    1. 命令概述 paste命令会把每个文件以列对列的方式,一列列地加以合并 ,他就是相当于把两个不同的文件内容粘贴...

  • Linux 拼接两个文件列拼接

    目的 拼接两个没有相同列的文件。 使用 join 首先考虑 join。先输出行号,再利用行号 join. 使用 a...

  • 两文件匹配并添加替换

    按两文件匹配并添加 两文件比较并替换 file1 file2 思路:把file1的第一列与file2的">"后的内...

  • 单细胞之富集分析-1:单细胞GSEA分析流程

    单细胞GSEA分析需要的文件有两个:1. 单细胞基因表达变化数据(两列,一列是geneid/gene symbol...

  • Manipulating Data - 融合数据框

    问题 你想要基于一个给定的列融合两个数据框(像SQL的join)。 方案 如果两个数据框里你想要匹配的列有不同的名...

  • Linux实用工具-vimdiff

    功能 同时打开两个或者多个文件,进行比较。 描述 vimdiff会将两个文件的相同指出尽量列在同一位置上面,便于查...

  • CASE WHEN 高阶用法?

    两个表做关联时,以左表为准,若左表某列不为空,则与右表对应列进行关联匹配,为空则不做匹配。 以上做法,有一种说不出...

网友评论

    本文标题:两个文件两列匹配

    本文链接:https://www.haomeiwen.com/subject/qethbqtx.html