繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM