python - 将多个表提取到 .csv

标签 python python-3.x pandas

我有一个 csv 文件,我用它来搜索 uniprot.org 中蛋白质的多个变体,以下网站就是一个例子:

https://www.uniprot.org/uniprot/?query=KU168294+env&sort=score


import pandas as pd
import requests
from bs4 import BeautifulSoup
import csv


df = pd.read_csv('Env_seq_list.csv')


second_column_df = df['Accession']


for row in second_column_df:


        theurl = 'https://www.uniprot.org/uniprot/?query=' + row + '+env&sort=score'
        page = requests.get(theurl).content

        df_list = pd.read_html(page)
        df = df_list[-1]

        print(df.loc[df['Gene names'] == 'env'])

如果我执行打印功能,它工作正常,并且我会返回我所查找的表的列表。我陷入了这一点,因为如果我改用 pandas df.to_csv 函数,我似乎无法让它与 df.loc 函数一起工作。此外,简单地使用 df.to_csv 函数只会将最后的搜索结果写入 .csv,我很确定这是由于该函数位于 for 循环内,但我不确定如何解决此问题。任何帮助将不胜感激:-)

最佳答案

我建议您获取每次循环中找到的 df,并将其附加到“最终”df。然后在循环之外,您可以在“最终”df 上运行 to_csv。代码如下:

final_df = pd.DataFrame()
for row in second_column_df:


    theurl = 'https://www.uniprot.org/uniprot/?query=' + row + '+env&sort=score'
    page = requests.get(theurl).content

    df_list = pd.read_html(page)
    df = df_list[-1]

    #print(df.loc[df['Gene names'] == 'env'])
    final_df = pd.concat([final_df, df.loc[df['Gene names'] == 'env']], axis=0)

final_df.to_csv('/path/to/save/csv')

关于python - 将多个表提取到 .csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59630202/

相关文章:

python - 时间戳的最大值

python - 恢复 Tensorflow 中的变量子集

python - 如何定义多个数据框

python - 以半字节组打印二进制数的简单方法

python - 将 5D 数组转换为 Pandas 数据框的最有效方法

python - 如何在 python 中使用生成器循环大型 Parquet 文件?

python - 设置绘图 y 轴和 x 轴比例相等

python - Jinja2 for Flask 未拾取子模板

python - 在基本操作系统(或 Ubuntu)上使用 python 3.8 而不是 3.6

python - Pandas检查IP地址属于哪个子网