2016-05-12 2 views
2

я получил файл, как это:read_table прочитать все данные в одном столбце

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

и пытался читать его в dataframe с помощью панд.

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

Вы должны добавить sep='s\+' для произвольного пробела разделителя в read_table.

Он не работает так, как вы ожидали, поскольку разделитель по умолчанию - ,, поэтому все данные находятся в одной колонке.

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 
+0

Спасибо за вашу помощь! Я проигнорировал это раньше. –

Смежные вопросы