use*_*113 0 python lxml pandas
嗨,我有大约10个表,我已经使用lxml进行了分类。
>>>import pandas as pd
>>>import lxml
>>>root = lxml.etree.HTML(htmlcontent)
>>>tables = root.findall('.//*[@id="info-container"]/table')
>>>readabletables = tables[::2]
>>>len(readabletables) = 5
>>>readabletables[0]
<Element table at 0x105241e60>
Run Code Online (Sandbox Code Playgroud)
我希望这5张表像一样被熊猫读取和解释pd.read_html。
我将如何去做呢?
我现在可以回答自己的问题,也许这对其他人有帮助。
由于某些识别问题,我尝试在熊猫中修改read_html源代码,但收效甚微。尽管如此,答案比您想象的要简单得多。
>>>import pandas as pd
>>>import lxml
>>>root = lxml.etree.HTML(htmlcontent)
>>>tables = root.findall('.//*[@id="info-container"]/table')
>>>readabletables = tables[::2]
>>>len(readabletables) = 5
Run Code Online (Sandbox Code Playgroud)
^这是我们已经建立的。
现在,为了让熊猫read_html能够识别lxml表,需要将该表转换为html。为此,我们执行以下操作:
>>>etree.tostring(readabletables[0],method='html')
'<table... table>'
Run Code Online (Sandbox Code Playgroud)
要将列表中的所有表转换为pandas df:
>>>pd_tables = [pd.read_html(lxml.etree.tostring(table,method='html')) for table in readabletables]
>>>len(pd_tables)
5
>>>type(pd_tables[0])
<class 'pandas.core.frame.DataFrame'>
Run Code Online (Sandbox Code Playgroud)
任务完成。
| 归档时间: |
|
| 查看次数: |
1219 次 |
| 最近记录: |