read_table将所有数据读取到一列

时间:2016-05-12 13:51:20

标签: string pandas dataframe

我有一个这样的文件:

TCGA1 0 QWE
TCGA2 1 QWE
TCGA2 -2 RAF
TCGA3 2 KLS

并尝试使用pandas将其读入数据框。

In [16]: df = pd.read_table('TR.txt',header=None)

但结果显示如下:

In [17]: df
Out[17]: 
          0
0   TCGA1 0 QWE
1   TCGA2 1 QWE
2  TCGA2 -2 RAF
3   TCGA3 2 KLS

错过了列名,我该如何解决? 谢谢!

1 个答案:

答案 0 :(得分:2)

您必须为read_table中的分隔符任意空格添加sep='s\+'

它无法正常工作,因为默认分隔符为,,因此所有数据都在一列中。

import pandas as pd
import io

temp=u"""TCGA1 0 QWE
TCGA2 1 QWE
TCGA2 -2 RAF
TCGA3 2 KLS"""
#after testing replace io.StringIO(temp) to filename
df = pd.read_table(io.StringIO(temp), sep="\s+", header=None)
print df
       0  1    2
0  TCGA1  0  QWE
1  TCGA2  1  QWE
2  TCGA2 -2  RAF
3  TCGA3  2  KLS

另一个参数为delim_whitespace=True的解决方案:

import pandas as pd
import io

temp=u"""TCGA1 0 QWE
TCGA2 1 QWE
TCGA2 -2 RAF
TCGA3 2 KLS"""
#after testing replace io.StringIO(temp) to filename
df = pd.read_table(io.StringIO(temp), delim_whitespace=True, header=None)
print df
       0  1    2
0  TCGA1  0  QWE
1  TCGA2  1  QWE
2  TCGA2 -2  RAF
3  TCGA3  2  KLS