目前,我正在编写一些代码,以便在csv文件中使用pandas读取,我需要将文件的第一行读取到一个列表中,以便用于一些描述(请参见代码部分1)。我可以用
熊猫.read_csv
参数
header=0
,它自动读取列标题,但不返回列表afaik。在评论中
print()
,names是我用来手动将列标题传递到的列表
熊猫.read_csv
但我希望它是自动的(所以当我添加/删除列时,我不必手动编辑名称数组)。
所以,为了解决这个问题,我想出了一个主意,就是使用csv.reader单独读取第一行,并得到一个列名列表,我可以用这种方式在pandas.read_csv中使用(参见代码第2部分)。
第1部分熊猫csv数据的读取和打印描述
import pandas as pd
filename = 'test.csv'
dataheadsize = 10
data = pd.read_csv(filename, sep=";", header=0, decimal=",")
用于在此处传递名称列表,而不是头=0
print('Descriptives:\n', data.describe(), '\n\n',
'Datasheet (', dataheadsize, 'rows shown):\n', data.head(dataheadsize),
#'Count per class:\n',data.groupby(names[0]).size(),'\n\n',
)
第2部分试图将csv的第一行读取到列表中
import csv
file = open(filename, 'r')
reader = csv.reader(file, delimiter=';')
names = next(reader)
print(names)
这给了我需要的列表,但由于某些原因,它在索引[0]处读取了一些额外的不需要的字符。这是由
打印()
:
['VAR00001', 'VAR00002', 'VAR00003']
如你所见,我不想要那些

'要返回的字符,我想知道最好的方法是什么来避免这种情况,我希望它尽可能自动地供将来使用,这就是为什么我不想通过切片来删除字符,因为我不知道这些字符是否根据csv文件而改变,它们的数量是否改变,等等。
作为参考,这是.csv文件的前5行:
VAR00001;VAR00002;VAR00003
1;2;4
1;2;4
0;5;4
0;1;4
正如你现在可能知道的,我不是最有经验的编码员,所以如果有一种方法可以跳过整个“在csv中单独阅读只是为了将列名放入列表”的部分,请务必让我知道,因为我搞不懂!