python - 如何重新索引从 pandas read_html 检索到的格式错误的列?

标签 python python-3.x pandas dataframe multiprocessing

我正在从一个网站上检索一些内容,该网站有几个列数相同的表,带有 pandas read_html .当我读取一个链接,该链接实际上包含多个列数相同的表时,pandas 有效地将所有表读取为一个(类似于平面/规范化表)。但是,我有兴趣对来自网站的链接列表(即多个链接的单个平面表)做同样的事情,所以我尝试了以下操作:

在:

import multiprocessing
def process(url):
    df_url = pd.read_html(url)
    df = pd.concat(df_url, ignore_index=False) 
    return df_url

links = ['link1.com','link2.com','link3.com',...,'linkN.com']

pool = multiprocessing.Pool(processes=6)
df = pool.map(process, links)
df

尽管如此,我想我并没有明确指定 read_html() 是列,所以我得到了这个格式错误的列表:

输出:

[[                Form     Disponibility  \
  0  290090 01780-500-01)  Unavailable - no product available for release.   

                             Relation  \

     Relation drawbacks  
  0                  NaN                        Removed 
  1                  NaN                        Removed ],
 [                                        Form  \

                                   Relation  \
  0  American Regent is currently releasing the 0.4...   
  1  American Regent is currently releasing the 1mg...   

     drawbacks  
  0  Demand increase for the drug  
  1                         Removed ,
                                          Form  \
  0  0.1 mg/mL; 10 mL Luer-Jet Prefilled Syringe (N...   

    Disponibility  Relation  \
  0                            Product available                  NaN   
  2                        Removed 
  3                        Removed ]]

所以我的问题是我应该移动哪个参数才能从上面的嵌套列表中获取平面 pandas 数据框?。我尝试了 header=0index_col=0match='"columns"',它们都不起作用或者我需要做当我使用 pd.Dataframe() 创建 pandas 数据框时的扁平化?我的主要目标是拥有一个与此列类似的 Pandas 数据框:

form, Disponibility, Relation, drawbacks
1 
2
...
n

最佳答案

IIUC 你可以这样做:

首先您要返回连接的 DF,而不是 DF 列表(因为 read_html 返回 DF 的列表):

def process(url):
    return pd.concat(pd.read_html(url), ignore_index=False) 

然后为所有 URL 连接它们:

df = pd.concat(pool.map(process, links), ignore_index=True)

关于python - 如何重新索引从 pandas read_html 检索到的格式错误的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40435222/

相关文章:

python - 如何使用 HtmlXPathSelector (Scrapy) 以 HTML 形式返回结果

python - Django自定义身份验证模型注册表单返回唯一用户名错误

python - 在 python 中重载 [] 运算符?

Python:自定义JSON解码器的性能

python : strange str. 包含行为

python - 如何使用 fuzzywuzzy 比率将一个数据框中的值与另一个数据框中的列进行比较

python - 迭代 pandas 数据框并替换条目

Python二进制文件直接从字符串写入

python / Pandas : How to combine cumsum and cumcount with agg function?

python - 如何在 ‘\n’ 上拆分一行并将拆分后的所有内容添加到新行?