我正在尝试使用csv.reader访问货币对的csv文件。第一列显示日期,第一行显示货币对,例如USD / CAD。我可以读取文件,但是无法访问货币对数据来执行简单的计算。
我尝试使用next(x)跳过标题行(货币对)。如果这样做,我将收到Typeerror:csv阅读器无法下标。
path = x
file = open(path)
dataset = csv.reader(file, delimiter = '\t',)
header = next(dataset)
header
输出显示标题行
['Date,USD,Index,CNY,JPY,EUR,KRW,GBP,SGD,INR,THB,NZD,TWD,MYR,IDR,VND,AED,PGK,HKD,CAD,CHF,SEK,SDR']
我希望能够访问基础货币对,但是如上所述,我遇到类型错误。是否有一种简单的方法来访问货币对,例如我想使用USD.describe()来获取有关美元货币对的简单统计信息。
如何从此阶段转移到访问标题行下面的数据?
答案 0 :(得分:0)
尝试此示例
import csv
with open('file.csv') as csv_file:
csv_reader = csv.Reader(csv_file, delimiter='\t')
line_count = 0
for row in csv_reader:
print(f'\t{row[0]} {row[1]} {row[3]}')
答案 1 :(得分:0)
从标题行的输出中可以明显看出,这些列是用逗号分隔而不是用制表符分隔的,因此,不要让delimiter = '\t'
传递到csv.reader
,而应让它使用默认的分隔符{改为{1}}:
','
答案 2 :(得分:0)
您确定分隔符为'\t'
吗?在第一行中,您的定界符为','
...无论如何,您可以在执行file.readline()
之前先跳过csv.reader
来跳过第一行:
import csv
example = """Date,USD,Index,CNY,JPY,EUR,KRW,GBP,SGD,INR,THB,NZD,TWD,MYR,IDR,VND,AED,PGK,HKD,CAD,CHF,SEK,SDR
1-2-3\tabc\t1.1\t1.2
4-5-6\txyz\t2.1\t2.2
"""
with open('demo.csv', 'w') as f:
f.write(example)
with open('demo.csv') as f:
f.readline()
reader = csv.reader(f, delimiter='\t')
for row in reader:
print(row)
# ['1-2-3', 'abc', '1.1', '1.2']
# ['4-5-6', 'xyz', '2.1', '2.2']
我认为您还需要其他...您能否补充您的问题:
您要访问的内容的示例:
row[0]
,row[1]
吗? row['Date'], row['USD']
这样的“命名”访问权限data_by_date['2019-05-01']['USD']
答案 3 :(得分:0)
如果您需要详细说明一些统计信息,pandas
是您的朋友。无需使用csv
模块,请使用pandas.read_csv
。
import pandas
filename = 'path/of/file.csv'
dataset = pandas.read_csv(filename, sep = '\t') #or whatever the separator is
pandas.read_csv
自动将第一行用作标题。
要查看统计信息,只需执行以下操作:
dataset.describe()
或对于单列:
dataset['column_name'].describe()