我有一个输入文件,我试图读入一个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
答案 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