Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从tsv文件中删除低值_Python - Fatal编程技术网

Python 如何从tsv文件中删除低值

Python 如何从tsv文件中删除低值,python,Python,我有这个TSV文件: kind 10 men 9 number 8 animated 7 blade 6 jolly 5 manage 4 move 3 complete 2 meat 1 我想删除所有旁边数字小于5的单词 因此,只有: Output: ki

我有这个TSV文件:

    kind        10
    men        9
    number        8
    animated        7
    blade        6
    jolly        5
    manage        4
    move         3
    complete        2
    meat        1
我想删除所有旁边数字小于5的单词

因此,只有:

    Output: 
    kind        10
    men        9
    number        8
    animated        7
    blade        6
    jolly        5
我想把它作为python代码来完成。我在想,也许我可以把它放在一个列表中,然后从列表中查看数字,如果少于5,它就会被删除。但我不知道该怎么做

大概是这样的:

    new_file = open(the_file,encoding="utf-8")
    data = new_file.readlines()
    new_list = []
    for values in data:
        if values > 5:
            new_list.append(values)









   
df = pd.read_csv('file.tsv', sep='\t')
df = df.loc[4 < df['column_name']]
with open('test.txt', 'wt') as file:
    file.writelines([c for c in content if int(c.strip()[-2:]) >= 5])

如果你在看这种文件,我真的会去看熊猫。这基本上比类固醇更有效

代码大致如下所示:

    new_file = open(the_file,encoding="utf-8")
    data = new_file.readlines()
    new_list = []
    for values in data:
        if values > 5:
            new_list.append(values)









   
df = pd.read_csv('file.tsv', sep='\t')
df = df.loc[4 < df['column_name']]
with open('test.txt', 'wt') as file:
    file.writelines([c for c in content if int(c.strip()[-2:]) >= 5])
df=pd.read\u csv('file.tsv',sep='\t')
df=df.loc[4
欢迎来到社区。 正如其他人所建议的,你很可能会使用熊猫。如果要使用csv模块,可以执行以下操作:

import csv

tsv_file = open("example.tsv")
read_tsv = list(csv.reader(tsv_file, delimiter="\t"))

for row in read_tsv:
    if float(row[1]) < 5:
        read_tsv.remove(row)
导入csv
tsv_文件=打开(“example.tsv”)
read_tsv=list(csv.reader(tsv_文件,分隔符=“\t”))
对于read_tsv中的行:
如果浮动(第[1]行)小于5:
读取\u tsv.删除(世界其他地区)
它将文件读入一个列表列表,每行为一个列表。如果它的值总是第二个,你可以这样读取它,并从较大的列表中删除该行。希望有帮助

编辑:
对不起,我刚看到你的评论。试试我在这篇文章中编辑的东西(我对CSV阅读器做了一些错误的假设,但我认为它现在已经修复了。希望它能工作。

首先你应该在文件中阅读。这将为你提供一个列表,列出文件中的每一行:

with open('test.txt', 'rt') as file:
    content = file.readlines()
现在,检查从每行最后到数字的整数就足够了(去掉换行符后)。将其与5进行比较,然后将其写回文件,如下所示:

    new_file = open(the_file,encoding="utf-8")
    data = new_file.readlines()
    new_list = []
    for values in data:
        if values > 5:
            new_list.append(values)









   
df = pd.read_csv('file.tsv', sep='\t')
df = df.loc[4 < df['column_name']]
with open('test.txt', 'wt') as file:
    file.writelines([c for c in content if int(c.strip()[-2:]) >= 5])

您应该考虑使用解析(C/T)SV文件,对于TSV使用:<代码> CSV.Reader(NeXyFrand,Delimist=“\t”)< /C>。如果您不确定如何继续,它总是有助于使用<代码>打印()。
查看您正在处理的变量中的值是什么。然后您可以看到那里有一个列表,而不是数字。对于内置的
csv
模块可以处理的东西来说,这不是有点过分了吗?在某种程度上,是的。但是如果TS对处理此类数据和Python感兴趣,它就太强大了。而且文档和可用资源都很好。我当然不知道TS的最终目的是什么,我看到你也建议了csv模块,所以让我们看看他或她想把它带到哪里:)小心熊猫不是Python。它是一个由Python支持的大型框架,但具有完全不同的语义。对于任何标准Python对象
a
,在
b=a
之后,
b==a
是布尔值
True
。所以如果b==a,你可以安全地做某事。但不是熊猫对象…当然它很强大,但考虑到OP正在努力进行基本数据过滤(不是指冒犯,每个人都从某个点开始),我认为他们还没有准备好被扔进熊猫的深水中。您好,我尝试过这种方法,但当我打印文件时,它给了我“AttributeError:“\u csv.reader”对象没有属性“drop”“也许我必须导入csv以外的内容才能使用drop AttributeEdit!抱歉。我也尝试了这个,但是它没有改变我的tsv文件中的任何内容,它仍然保留了相同数量的数据点。您是否用您的文件替换了
test.txt
?是的,我想要运行的实际文件有55804个数据点,但都是tsv。在我运行代码之后,我使用len操作符查看文件的长度,它仍然是55804.Hmm,使用您的示例tsv文件对我来说效果很好。你只有那两列,对吗?是的,只有那两列,一列写单词,另一列写数字。它的单词的前面和后面是数字,数字之间用制表符隔开。