import csv as csvimport numpy as npimport pandas as pdcsv_file_object = csv.reader(open('train.csv','rb')) # Load in the csv fileheader = csv_file_object.next() # Skip the fist line as it is a headerdata=[] # Create a variable to hold the datafor row in csv_file_object: # Skip through each row in the csv file,data.append(row[0:]) # adding each row to the data variabledata = np.array(data) def number_of_female_in_class_3(data): for row in data.iterow: if row[2] == 'female' and row[4] == '3': sum += 1
问题是函数number_of_female_in_class_3我想通过两个colunms,我想通过第2列来检查行是否包含字符串’female’并通过第4列并检查状态是否为’3′.如果这是是的,然后我想增加1到总和.
我想知道是否有人可以发布一个简单的代码来说明如何实现这一目标?
这是我试图检索的train.csv文件.
**PassengerID** | **Survived** | **Pclass** | **name** | **Sex** | 1 | 0 | 3 | mary | Female | 2 | 1 | 2 | james | Male | 3 | 1 | 3 | Tanya | Female |
谢谢
解决方法 的确,大熊猫可以帮助你.我从一个更干净的CSV开始:
PassengerID,Survived,Pclass,name,Sex1,3,mary,female2,1,2,james,male3,tanya,female
如果您的CSV实际上看起来像您发布的内容(不是真正的CSV),那么您将有一些争吵(见下文).但如果你能吃大熊猫:
>>> import pandas as pd>>> df = pd.DataFrame.from_csv('data.csv')>>> result = df[(df.Sex=='female') & (df.Survived==False)]
结果在新的DataFrame中:
>>> result Survived Pclass name SexPassengerID 1 0 3 mary female
你可以做len(结果)得到你想要的计数.
加载该CSV
如果你坚持使用那个令人讨厌的CSV,你可以这样得到你的df:
# Load using a different delimiter.df = pd.DataFrame.from_csv('data.csv',sep="|")# Rename the index.df.index.names = ['PassID']# Rename the columns,using X for the bogus one.df.columns = ['Survived','Pclass','name','Sex','X']# Remove the 'extra' column.del df['X']总结
以上是内存溢出为你收集整理的如何在python中迭代两列?全部内容,希望文章能够帮你解决如何在python中迭代两列?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)