我使用Pandas库来处理文本,因为我发现它比csv
模块容易得多。这里有一个问题。我有一个多列的.csv文件:subtitle
、title,
和description
。下面是我如何访问每列中的行内容。
colnames = ['subtitle', 'description', 'title']
data = pandas.read_csv('C:\Users\B\cwitems.csv', names=colnames)
subtit = list(data.subtitle)
desc = list(data.description)
title = list(data.title)
for line in zip(subtit, desc, title):
print line
问题是,不管出于什么原因,当我打印line
时,预期的副标题没有打印出来。当我打印每个desc
时,标题显示出来。当我单独打印subtit
时,描述被打印出来。因此,看起来每一列都偏离了-1。有人能解释这种行为吗?这是预期的吗?我如何避免它?
5条答案
按热度按时间hgb9j2n61#
我想你是想加载一个有4列的文件,但只给了3个列名。
您不必删除文件中未使用的列。
默认情况下,read_csv加载所有列,在本例中#cols = #colnames+1,因此第一列用作 Dataframe 索引。所有其余列移位1。
vltsax252#
不知道这是不是一个答案,但它太长的评论。随意忽略它。
将打印:
dw1jzc5e3#
我已经为
pd.read_csv
添加了index_col=False
,现在可以了。jexiocij4#
看起来我已经解决了这个问题-虽然我在文档中没有找到这个问题,所以也许一个更有经验的Pandas用户可以解释为什么/如何。
我是这么做的我删除了一个未使用的列(.csv文件中的最后一列),并将索引重置为正确的/预期的顺序。我不知道该如何解释这种行为(或其更正)-是否与我的.csv文件有关,或者是否是Pandas的问题(也许只是Pandas在处理文本时的问题)。我不知道。
无论哪种方式,我真的很感谢所有的帮助!!我这次很幸运。
j2datikz5#
我也遇到了类似的问题,原来我试图下载的.csv在标题行的末尾没有逗号,但在每隔一行的末尾都有逗号。传递index_col=False(而不是index_col=None,默认值)强制pandas创建一个索引列,而不是推断一个,这使我的数据正确排列。