首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除不包含特定文本的行

删除不包含特定文本的行
EN

Stack Overflow用户
提问于 2018-09-24 08:04:46
回答 2查看 5.6K关注 0票数 2

我有一个表格文件,如下所示:

代码语言:javascript
复制
query_name      KEGG_KOs
PROKKA_00013    NaN
PROKKA_00015    bactNOG[38]
PROKKA_00017    NA|NA|NA
PROKKA_00019    K00240
PROKKA_00020    K00246
PROKKA_00022    K02887

如果第2列('KEGG_KOs')不是以'K0‘开头的话,我将创建一个脚本来遍历并删除整个行。我试图创建一个输出:

代码语言:javascript
复制
query_name     KEGG_KOs
PROKKA_00019    K00240
PROKKA_00020    K00246
PROKKA_00022    K02887

以前的回复提到了熊猫DataFrame,但我没有运气使用这些回复来帮助。任何人都会非常感激的,干杯。

我试过了(但这只会分离出一个特定的K0行。

代码语言:javascript
复制
df = pd.read_csv("eggnog.txt", delimiter="\t", names=["#query_name", "KEGG_KOs"])
print(df.loc[df['KEGG_KOs'] == 'K00240'])
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-24 08:07:38

boolean indexingstartswith一起使用,或containsregex一起用于字符串^和参数na=False的开始,因为缺少值:

代码语言:javascript
复制
df1 = df[df['KEGG_KOs'].str.startswith('K0', na=False)]
print (df1)
     query_name KEGG_KOs
3  PROKKA_00019   K00240
4  PROKKA_00020   K00246
5  PROKKA_00022   K02887

或者:

代码语言:javascript
复制
df1 = df[df['KEGG_KOs'].str.contains('^K0', na=False)]
票数 3
EN

Stack Overflow用户

发布于 2018-09-24 08:52:52

您可以使用打开作为读,然后写。假设原始文件保存为old.txt,更新的文件将保存为new.txt

代码语言:javascript
复制
text = ''
with open("old.txt", 'r') as org:
    next(org)
    for line in org:
        data = line.strip().split()
        if data[1].startswith("K0"):
            text = text + data[0] + " "+ data[1] + '\n'

w = open('new.txt', 'w')
w.write("query_name"+" "+ "KEGG_KOs\n")
w.write(text)
w.close()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52475005

复制
相关文章

相似问题

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