gpt4 book ai didi

python - csv.DictReader() 是否返回字典对象?

转载 作者:太空宇宙 更新时间:2023-11-04 02:17:52 25 4
gpt4 key购买 nike

当我尝试使用 csv.DictReader()CSV 文件传输到字典时,如下所示:

csv_file = open(input_file, "r")
data = csv.DictReader(csv_file)

但是,我不能将任何字典方法应用于数据

因此,我打印了数据的类型。

print(type(data))

并找到类型是:

<class 'csv.DictReader'>

那么 csv.DictReader() 真的返回一个字典对象吗?如何从 CSV 获取字典对象?

我的 CSV 文件如下所示:

[['play', 'weather', 'temperature'], ['yes', 'sunny', '77'], ['no', 'rainny', '60'], ['yes', 'windy', '70'],...]

实际上,我没有预期的输出。我只想存储这些值以供我进一步计算。

编辑(根据评论): 输出可能分为两部分。第一个是 csv 文件的 header ,例如 ['play', 'weather', 'temperature'] 。第二个可以是这样的:[['yes', 'sunny', '77'], ['no', 'rainny', '60'], ['yes', 'windy', '70 ']...]

最佳答案

csv.reader

鉴于您想要的输出,您不需要使用 dictcsv.DictReader。相反,只需使用 csv.reader,它返回一个迭代器。然后使用nextlist分别提取headers和data:

from io import StringIO
import csv

x = StringIO("""play,weather,temperature
yes,sunny,77
no,rainy,60
yes,windy,70""")

# replace x with open('file.csv', 'r')
with x as fin:
reader = csv.reader(fin)
headers = next(reader) # get headers from first row
data = list(reader) # exhaust iterator from second row onwards

结果是一个标题列表和一个数据列表列表:

print(headers)

['play', 'weather', 'temperature']

print(data)

[['yes', 'sunny', '77'],
['no', 'rainy', '60'],
['yes', 'windy', '70']]

Pandas

如果您愿意使用第三方库,Pandas 可能是更好的选择,因为它可以更方便地处理类型转换和索引:

import pandas as pd

df = pd.read_csv('file.csv')

结果是一个pd.DataFrame对象:

print(df)

play weather temperature
0 yes sunny 77
1 no rainy 60
2 yes windy 70

print(type(df))

<class 'pandas.core.frame.DataFrame'>

关于python - csv.DictReader() 是否返回字典对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52240080/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com