首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用txt文件上的值过滤csv上的行

使用txt文件上的值过滤csv上的行
EN

Stack Overflow用户
提问于 2020-11-02 23:15:47
回答 3查看 230关注 0票数 0

因此,我有一个csv文件,其中我需要根据txt文件上的值来筛选行。有没有一个简单的方法可以在熊猫身上做到这一点?csv将有大约2000行,而txt文件有大约400个数据点。我需要生成一个csv,其中的行与txt文件中的数据相匹配。

CSV文件如下所示:

代码语言:javascript
运行
复制
Chromosome Gene Start End 
1 PERM1 5 6 
2 AGRN 7 10
3 MIB2 9 12

该文本文件如下所示

代码语言:javascript
运行
复制
PERM1 
NADK 
GNB1

谢谢

EN

回答 3

Stack Overflow用户

发布于 2020-11-02 23:20:00

首先将文本文件读入列表或元组:

代码语言:javascript
运行
复制
lines = tuple(open(filename, 'r'))

然后过滤文本文件中存在的行:

代码语言:javascript
运行
复制
df = read_csv('csvfile')
result = df[df['Chromosome Gene'].isin(lines)]
票数 0
EN

Stack Overflow用户

发布于 2020-11-02 23:24:28

使用pandas read和filter功能非常简单。我假设您有一个名为input_csv_file的输入.csv文件和一个名为filter.csv的过滤器文件。输入文件有一列"filter_locatitons“,而input_file有一列叫做"locations":

代码语言:javascript
运行
复制
input_df = pd.read_csv('input_csv_file.csv')
filter_df = pd.read_csv('filter.csv')

filtered_df = input_df[[input_df['location'].isin(filter_df['filter_locations']]
票数 0
EN

Stack Overflow用户

发布于 2020-11-03 01:54:04

这可以通过使用掩码并在数据帧中加载这两个文件来实现。下面的代码假设您的测试文件没有头文件,并且csv文件是空格分隔的

代码语言:javascript
运行
复制
import pandas as pd

df1 = pd.read_csv('csvfile.csv', delimiter=' ')
df2 = pd.read_csv('textfile.txt', header=None)
df2.columns = ['Gene']

m = df1.Gene.isin(df2.Gene)
df3 = df1[m]
print(df3) 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64648222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档