我可以使用不同的空格分隔符导入文本文件?

时间:2018-02-06 00:52:52

标签: python pandas

我想导入这个.txt文件,但是由于" No"之间的空间。和#34;记录",pandas将它们作为单独的列导入。我怎样才能有sep个变化?正则表达式?

data = pd.read_table('file.txt', sep=' ', header=None)

数据

01/01/1933  NO RECORD   NO RECORD   MISSING     MISSING
01/02/1933  NO RECORD   NO RECORD   MISSING     MISSING
01/03/1933  NO RECORD   NO RECORD   MISSING     MISSING
01/04/1933  NO RECORD   NO RECORD   MISSING     MISSING
01/05/1933  NO RECORD   NO RECORD   MISSING     MISSING
01/06/1933  NO RECORD   NO RECORD   MISSING     MISSING
01/07/1933  NO RECORD   NO RECORD   368.00  MISSING
01/08/1933  NO RECORD   NO RECORD   MISSING     MISSING
01/09/1933  NO RECORD   NO RECORD   MISSING     MISSING
01/10/1933  NO RECORD   NO RECORD   MISSING     MISSING
01/11/1933  NO RECORD   NO RECORD   MISSING     MISSING

当前导入

**  0   1   2   3   4   5
0   01/01/1933\tNO  RECORD  \tNO    RECORD  \tMISSING   \tMISSING
1   01/02/1933\tNO  RECORD  \tNO    RECORD  \tMISSING   \tMISSING
2   01/03/1933\tNO  RECORD  \tNO    RECORD  \tMISSING   \tMISSING
3   01/04/1933\tNO  RECORD  \tNO    RECORD  \tMISSING   \tMISSING
4   01/05/1933\tNO  RECORD  \tNO    RECORD  \tMISSING   \tMISSING**

2 个答案:

答案 0 :(得分:4)

这看起来像是制表符分隔的文件。您可以使用sep='\t',它应该可以正常工作。

实际上,pd.read_table的默认值已经是sep='\t

答案 1 :(得分:1)

在您的情况下,只需使用sep='\t'即可解决。

但是如果存在多个分隔符(例如,\t),则可以通过执行',|\t'来设置正则表达式,python引擎会自动将其识别为正则表达式。所以,这句话将是:

df = pd.read_table('file.txt',sep=',|\t', header=None)