2013-08-01 49 views
1

我有一个输入文件,我想读入一个熊猫数据框。 该文件是空格分隔的,包括第一个值之前的空格。 我已经尝试使用“\ W +”正则表达式作为分隔符的read_csv和read_table。 W +分隔符意外的read_csv结果

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

他们在正确的列数读,但值本身是完全伪造的。是否有其他人遇到过这种情况,或者我使用不正确

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

是否有任何其他选项用于从文件创建数据框?

我使用熊猫v0.11.0,Python 2.7版

回答

2

正则表达式'\W'的意思是“不是一个单词字符”(一个“单词字符”是字母,数字和下划线),看到re docs,因此怪结果。我想你的意思是使用空格'\s+'

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

+0

我的错误与\ W。 \ s +和delim_whitespace都可以工作。文档似乎表明delim_whitespace提供更好的性能。 再次感谢:) – taylormade201

1

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

你可以在这里看到它的文档:http://pandas.pydata.org/pandas-docs/dev/io.html