我试图使用For循环和pd.read\u html函数来刮表
每个html有17个表
我首先从一个excel文件中取出标记,并将它们转换成一个列表。然后,我将其贯穿:
import pandas as pd
df = pd.read_excel('C:/Users/Jacob/Downloads/CEF Tickers.xlsx', sheet_name='Sheet1')
tickers_list = df['Ticker'].tolist()
# There are some test tickers: ["ASA", "FAX", "IAF"]
df_list1 = []
for ticker in tickers_list:
df_list1.append(pd.read_html(f'https://www.cefconnect.com/fund/{ticker}', header=0)[0])
这里我从每个pd.html表刮取第一个数据帧。实际上有17张桌子被拉着。我的计划是:
df_list1 = []
df_list2 = []
...
df_list17 = []
for ticker in tickers_list:
df_list1.append(pd.read_html(f'https://www.cefconnect.com/fund/{ticker}', header=0)[0])
df_list2.append(pd.read_html(f'https://www.cefconnect.com/fund/{ticker}', header=0)[1])
...
df_list17.append(pd.read_html(f'https://www.cefconnect.com/fund/{ticker}', header=0)[16])
df_list1中的数据帧看起来像this
我一直在寻找各种方法,试图将df_list1中的数据帧转换成this,但没有结果
当df_list1中的数据帧看起来像这样时,我可以使用pd.concat并将列表转换成一个大数据帧。然后将所有的df_列表1到df_列表17连接在一起,并将标记作为索引
我以前使用过pd.json_normalize函数来平展这样的数据集。我是否需要将每个数据帧转换为一个字典并执行相同的操作
谢谢大家抽出时间
试试这个,使用字典而不是列表,这样我就可以在连接的数据帧中跟踪我的标记,然后再重塑(展平):
输出:
相关问题 更多 >
编程相关推荐