[英]How can I make my function to read a csv file and return a list in Python?
我有一个需要 2 个输入的函数。 我希望它读取一个 csv 文件并返回一个一维列表,该列表以连续的方式包含来自每一行的数据。 我希望我的函数列出列表中每个被提名人的每张选票。
我的功能代码是:
import csv
import pandas as pd
def retreiveData(filename,nominees):
file=open(filename)
csv_reader=csv.reader(file)
result=[]
return result
nominees=["Obama","Romney","Johnson","Stein","Others"]
retreiveData("ElectionUSA2012.csv",nominees)
“ElectionUSA2012.csv”中有一些数据。它包含每个被提名人的票数。
你为什么不使用 pd.read_csv()? 并将数据框转换为列表:
df = pd.read_csv(filename)
result = df.to_numpy().tolist() #if you want list or numpy array
这个怎么样?
import pandas as pd
def retrieve_data(csv_file_path, nominees):
df = pd.read_csv(csv_file_path)
# https://stackoverflow.com/questions/11346283/renaming-column-names-in-pandas
counts = df.sum(axis = 0, skipna = True).values.tolist()
# https://www.geeksforgeeks.org/python-pandas-dataframe-sum/
counts = {k:v for k, v in zip(nominees, counts)}
return counts
csv_file_path = 'csv.csv'
counts = retrieve_data(csv_file_path, nominees=["Obama", "Romney", "Johnson", "Stein", "Others"])
print(counts)
对于这样的 csv 文件:
A B C D E
1 2 3 4 6
4 4 2 3 6
3 3 3 10 6
它会像这样打印一个字典:
{'Obama': 8, 'Romney': 9, 'Johnson': 8, 'Stein': 17, "Others": 18}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.