在csv中搜索值并多次返回行

2024-10-01 09:17:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我是个想学Python的笨蛋

我试图为一个包含30000行数据的CSV文件编写一个脚本。在

我想在每一行中查找列中的一个数字,并在每次找到该数字时返回该行。在

我已经搜索和尝试了许多不同的建议,但他们似乎没有做我需要的,有人能帮我吗,如果我说不通,请告诉我。在

以下是到目前为止我所得到的,它只是返回到标题:

    import csv

with open("test.csv", "r") as input, open ("result.txt","w") as result:
          testfilereader = csv.DictReader(input) 
          Age = 23
          fieldnames = testfilereader.fieldnames
          testfilewriter = csv.DictWriter(result, fieldnames, delimiter=',',)
          testfilewriter.writeheader()      
          for row in testfilereader:
                 for field in row:
                        if field == Age:
                             testfilewriter(row)


input.close

谢谢大家


Tags: csvinfieldforinputageas数字
3条回答

您可以使用用于处理表格数据的^{}模块。在

首先:将csv读入所谓的数据帧:

import pandas as pd
df = pd.read_csv("test.csv")

现在,您可以通过逻辑索引筛选所需的行:

^{pr2}$

要将结果返回磁盘,只需使用^{}方法:

result.to_csv('result.csv')

因为您使用了DictFileReader,所以您得到了一个字典列表。 因此,您应该使用dictionary['field']在字段中搜索所需的年龄。 像这样:

with open("test.csv", "r") as input, open ("result.txt","w") as result:
     testfilereader = csv.DictReader(input) 
     Age = 23
     fieldnames = testfilereader.fieldnames()
     testfilewriter = csv.DictWriter(result, fieldnames, delimiter=',',)
     testfilewriter.writeheader()      
     for row in testfilereader:
         if row['Age'] == Age:
            testfilewriter.writerow(row)

当然,如果字段名是其他名称,则需要将row['Age']更改为row['Somethingelse']。在

如果您不想迭代这些值,应该使用testfilereader.values(),但是首先将数据映射到字典就没有意义了。在

你也不应该试图关闭那里的输入。它将在离开with open...块时关闭。在

您可以按如下方式使用Pandas

csv文件:

Id,Name,Age
1,John,30
2,Alex,20
3,Albert,30
4,Richard,30
5,Mariah,30

python:

^{pr2}$

相关问题 更多 >