社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

python csv文件读取:将第一行转换为列标题,next(reader)返回不需要的字符

D. Joe • 4 年前 • 851 次点击  

目前,我正在编写一些代码,以便在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中单独阅读只是为了将列名放入列表”的部分,请务必让我知道,因为我搞不懂!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/50872
 
851 次点击  
文章 [ 4 ]  |  最新文章 4 年前