使用\ W +分隔符导致意外的read_csv结果

时间:2013-08-01 15:27:45

标签: python pandas

我有一个输入文件,我试图读入一个pandas数据帧。 该文件以空格分隔,包括第一个值之前的空格。 我已经尝试了read_csv和read_table,并使用“\ W +”正则表达式作为分隔符。

data = pd.io.parsers.read_csv('file.txt',names=header,sep="\W+")

他们读取正确的列数,但值本身完全是假的。有没有其他人经历过这个,或者我使用不正确

我还尝试逐行读取文件,从row.split()创建一个系列并将该系列追加到数据帧,但它似乎因内存而崩溃。

是否还有其他选项可以从文件创建数据框?

我正在使用Pandas v0.11.0,Python 2.7

2 个答案:

答案 0 :(得分:2)

正则表达式'\W'表示“不是单词字符”(“单词字符”是字母,数字和下划线),请参阅re docs,因此结果很奇怪。我认为你打算使用空格'\s+'

注意:read_csv提供delim_whitespace参数(您可以设置为True),但我个人更喜欢使用'\s+'

答案 1 :(得分:1)

我不知道你的数据是什么样的,所以我无法重现你的错误。我创建了一些示例数据并且工作正常,但有时在read_csv中使用正则表达式可能很麻烦。如果要指定分隔符,请改用“”作为分隔符。但我建议先尝试安迪海登的建议。它是“delim_whitespace = True”。效果很好。

您可以在此处的文档中看到它:http://pandas.pydata.org/pandas-docs/dev/io.html