有没有一种方法可以修改pd.read_html,使其返回一个数据框而不是数据框列表?
背景: 我正在尝试使用pandas read_html从网站导入表格。我了解到pd.read_html返回的是数据框列表而不是单个数据框。我一直通过将pd.read_html返回的列表中的第一个(也是唯一的)数据框分配给一个新变量来规避这个问题。但是,我想从不同的url存储多个数据框在主字典中(使用下面的代码),并希望值是数据框元素,而不是列表。
背景: 我正在尝试使用pandas read_html从网站导入表格。我了解到pd.read_html返回的是数据框列表而不是单个数据框。我一直通过将pd.read_html返回的列表中的第一个(也是唯一的)数据框分配给一个新变量来规避这个问题。但是,我想从不同的url存储多个数据框在主字典中(使用下面的代码),并希望值是数据框元素,而不是列表。
urls_dict = {
'2017': 'https://postgrad.sgu.edu/ResidencyAppointmentDirectory.aspx?year=2017',
'2016': 'https://postgrad.sgu.edu/ResidencyAppointmentDirectory.aspx?year=2016',
'2015': 'https://postgrad.sgu.edu/ResidencyAppointmentDirectory.aspx?year=2015',
'2014': 'https://postgrad.sgu.edu/ResidencyAppointmentDirectory.aspx?year=2014',
'2013': 'https://postgrad.sgu.edu/ResidencyAppointmentDirectory.aspx?year=2013',
'2012': 'https://postgrad.sgu.edu/ResidencyAppointmentDirectory.aspx?year=2012',
'2011': 'https://postgrad.sgu.edu/ResidencyAppointmentDirectory.aspx?year=2011',
'2010': 'https://postgrad.sgu.edu/ResidencyAppointmentDirectory.aspx?year=2010',
'2009': 'https://postgrad.sgu.edu/ResidencyAppointmentDirectory.aspx?year=2009'
}
dfs_dict = {}
for key, url in urls_dict.items():
dfs_dict[key] = pd.read_html(url)
.assign(grad_year=year)
。左侧是新列名(grad_year
),右侧是要分配给该列的变量(根据urls_dict
中的键给出的年份)。该表达式在方括号[...]
中,因为它是一个列表推导式,生成一个数据框列表,这是传递给pd.concat
函数的输入参数。 - Alexander