Python 在csv中搜索值并多次返回该行
我是个想学python的书呆子 我正在尝试为包含30000行数据的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:
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模块吗?谢谢,你能告诉我如何在年龄列中搜索多个值吗