在Python中,我如何让我的函数读取csv文件并返回列表?

vd2z7a6w  于 2022-12-20  发布在  Python
关注(0)|答案(2)|浏览(142)

我有一个函数,需要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”中有一些数据。它包含每个被提名人的选票计数。

jgwigjjp

jgwigjjp1#

为什么不使用pd.read_csv()?并将 Dataframe 转换为列表:

df = pd.read_csv(filename)
    result = df.to_numpy().tolist() #if you want list or numpy array
t98cgbkg

t98cgbkg2#

这个怎么样?

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}

相关问题