用这种数据集读取带有pandas的csv

时间:2017-06-16 00:54:24

标签: python csv pandas

我有一些麻烦要读这样的数据集:

#    title
#    description
#    link (could be not still active)
#    id
#    date
#    source (nyt|us|reuters)
#    category

示例:

court agrees to expedite n.f.l.'s appeal\n
the decision means a ruling could be made nearly two months before the regular season begins, time for the sides to work out a deal without delaying the 
season.\n
http://feeds1.nytimes.com/~r/nyt/rss/sports/~3/nbjo7ygxwpc/04nfl.html\n
0\n
04 May 2011 07:39:03\n
nyt\n
sport\n

我试过了:

columns = ['title', 'description', 'link', 'id', 'date', 'source', 'category']
df = pd.read_csv('news', delimiter = "\n", names = columns,error_bad_lines=False)

但它将所有信息都放在了列标题中。

有人知道处理这个问题的方法吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

您不能使用\n作为csv的分隔符,您可以做的是将索引设置为等于列名,然后进行转置,即

df = pd.read_csv('news', index=columns).transpose()

答案 1 :(得分:0)

以下是一些需要注意的事项:

1)Pandas将任何长度超过1个字符的分隔符解释为正则表达式。

2)因为' c'引擎不支持正则表达式,我已明确定义引擎为' python'避免警告。

3)我不得不添加一个虚拟列,因为有一个' \ n'在文件的末尾,我后来使用drop删除了该列。

所以,这些行有望成为你想要的结果。

columns = ['title', 'description', 'link', 'id', 'date', 'source', 'category','dummy']
df = pd.read_csv('news', names=columns, delimiter="\\\\n", engine='python').drop('dummy',axis=1)
df

我希望这会有所帮助:)