Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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 在csv中搜索值并多次返回该行_Python_Excel_Csv - Fatal编程技术网

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

Python 在csv中搜索值并多次返回该行,python,excel,csv,Python,Excel,Csv,我是个想学python的书呆子 我正在尝试为包含30000行数据的CSV文件编写脚本 我希望在每一行中查找列中的数字,并在每次找到该数字时返回该行 我已经搜索并尝试了许多不同的建议,但他们似乎没有做我需要的事情,任何人都可以帮助我,如果我没有道理,请让我知道 以下是我到目前为止的内容,它只返回到标题: import csv with open("test.csv", "r") as input, open ("result.txt","w") as result:

我是个想学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
感谢大家

您可以使用专门用于处理表格数据的模块

第一:将csv读入所谓的数据帧:

import pandas as pd
df = pd.read_csv("test.csv")
现在,您可以通过逻辑索引筛选所需的行:

result = df[df['Age']==23]
要将结果返回磁盘,只需使用以下方法:


您可以按如下方式使用熊猫:

csv文件:

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

df = pd.read_csv("ex.csv", sep = ",")
print df[df["Age"] == 30] 

   Id     Name  Age
0   1     John   30
2   3   Albert   30
3   4  Richard   30
4   5   Mariah   30
python:

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

df = pd.read_csv("ex.csv", sep = ",")
print df[df["Age"] == 30] 

   Id     Name  Age
0   1     John   30
2   3   Albert   30
3   4  Richard   30
4   5   Mariah   30

因为您使用了DictFileReader,所以您得到了一个字典列表。 因此,您应该使用
字典['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)
当然,如果字段名是其他名称,则需要将
行['Age']
更改为
行['Somethingelse']

如果您只是想对值进行迭代,那么应该使用
testfilereader.values()
,但是首先将数据映射到字典是没有意义的


您也不应该尝试关闭那里的输入。当
打开时,它将关闭…
块。

大家好,谢谢你们的帖子。我的电脑和安装panda遇到了一些问题,所以我不得不尝试另一种方法,这对我很有效

import csv
import sys


number = '5' 

csv_file = csv.reader(open('Alerts.csv', "rb"), delimiter=",")
filename  = open("Result.txt",'w')
sys.stdout =filename

#loop through csv list
for row in csv_file:
    if number == row[0]:
       print row

你试过使用Pandas吗?嗨,不,我不是python新手,不知道我会如何使用它们。列的名称是什么?列的年龄名称你可以输入csv文件中的一些行吗?嗨,谢谢大家的帮助,但是如果我使用Pandas,我如何进入txt文件或我不能这样做?这也是一个csv文件好吗?是的,也可以好的,如果我的回答回答了你的问题,请接受。嗨,我一直在尝试安装pandas,我已经安装了anaconda,pandas模块没有显示。你知道更好的方法让我再次打开panda模块吗?谢谢,你能告诉我如何在年龄列中搜索多个值吗