我正在使用python,我有一个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 :(得分: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。
你现在可以操作,熊猫风格!特别是,您可能想要提取案例和控件。
# 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"])