我有一个 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/