我正在尝试从CSV文件创建字典。csv文件的第一列包含唯一键,第二列包含值。csv文件的每一行表示字典中唯一的键、值对。我试着用csv。DictReader和csv。dictwwriter类,但我只能弄清楚如何为每一列生成一个新字典。我想要一本字典。下面是我要使用的代码:
def read_data(file_name):
data = {}
with open(file_name, "r") as f:
reader = csv.reader(f, delimiter = ',')
number_columns = len(next(reader))
for d in range (number_columns):
column_data, column_name = read_column(file_name, d)
data[column_name] = column_data
return data
我的数据:在这里输入图像描述我的预期结果:输入图片描述
Using csvDictReader
:
with open(file_name) as csv_file:
dictR = csv.DictReader(csv_file)
data = {hdr: [] for hdr in dictR.fieldnames}
for row in dictR:
for field in row:
data[field].append(row[field])
使用从DictReader
获取的字段名构建初始data
dict
。然后遍历row中的行和字段。对于每个字段,将字段值附加到data
dict
中字段名称对应的列表中。
如果您不介意为数据使用2D表而不是键值对,则可以使用pandas模块,该模块中有一个名为to_dict()
的有用函数,可将CSV转换为字典。下面是一个示例:
import pandas as pd
file = pd.read_csv(filename, sep=',') #<---- the sep argument does the same thing as the delimiter argument, it is short for separator
random_dict = pd.to_dict(file)