Python 如何从tsv文件中删除低值
我有这个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
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文件对我来说效果很好。你只有那两列,对吗?是的,只有那两列,一列写单词,另一列写数字。它的单词的前面和后面是数字,数字之间用制表符隔开。