2013-09-12 4 views
0

Я использую python, и у меня есть файл HTML, в котором есть таблица, содержащая имя образца, имя гена и количество случаев и элементов управления в эксперименте. Как это ...Манипулирование данными в файле HTML

Sample Gene  Cases,Controls 
snow  NGF  1,2 
sun  NGF  2,3 
sun  NGF  1,0 
snow  NGF  1,3 

Мне нужно отделить корпуса и элементы управления от 2 отдельных столбцов, а затем добавить столбцы для исправленных случаев и исправленных элементов управления. Поэтому, если образец, это снег, количество случаев должно быть умножено на 0,8, а если образец - солнце, количество элементов управления должно быть умножено на 1,5. Я не уверен, как идентифицировать случаи и элементы управления в строке, а затем назначить случай и управлять разными переменными, чтобы я мог ими управлять.

+0

Оно не появляется право, но снег/ВС должен быть под столбцом образца, NGF должен быть под столбцом Gene, и числа (т.е. 1,2) является чтобы быть под судами, управляет столбцом – user2773872

+0

, это может помочь: http://www.crummy.com/software/BeautifulSoup/ d –

+0

Что у вас есть до сих пор и где вы застряли? – kindall

ответ

1

Попробуйте библиотеку pandas для этого. Обязательно установите lxml.

Во-первых, давайте представим, что это ваш HTML:

<table> 
<tr><th>Sample</th><th>Gene</th><th>Cases,Controls</th></tr> 
<tr><td>snow</td><td>NGF</td><td>1,2</td></tr> 
<tr><td>sun</td><td>NGF</td><td>2,3</td></tr> 
<tr><td>sun</td><td>NGF</td><td>1,0</td></tr> 
<tr><td>snow</td><td>NGF</td><td>1,3</td></tr> 
</table> 

Я также предполагаю, что вы читали, что в переменную под названием html.

import pandas 
tables = pandas.io.html.read_html(html,header=0,infer_types=False) 

# Pandas reads each table read from the HTML into a list, 
# we only have one here 
table = tables[0] 

Это сделало DataFrame с вашим столом.

panda dataframe

Что теперь вы можете работать на панду стиль! В частности, вы, вероятно, захотите вытащить случаи и средства контроля.

# Break out those cases and controls into a DataFrame 
case_control_list = table["Cases,Controls"].str.split(',',1).tolist(), 
case_control = pandas.DataFrame(case_control_list, columns = ["Cases", "Controls"]) 

case control pandas

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