我是python和这个数据科学界的新手,我正在尝试使用不同的数据集。
在这种情况下,我使用的是quandl的住房价格指数,但是不幸的是,当我需要从Wiki页面获取缩写名称时,总是遇到相同的Error KeyError错误。
import quandl
import pandas as pd
#pull every single housing price index from quandl
#quandl api key
api_key = 'xxxxxxxxxxxx'
#get stuff from quandl
df = quandl.get('FMAC/HPI_AK',authtoken = api_key) #alaska \
##print(df.head())
#get 50 states using pandas read html from wikipedia
fifty_states = pd.read_html('https://en.wikipedia.org /wiki/List_of_states_and_territories_of_the_United_States')
##print(fifty_states[0][1]) #first data frame is index 0, #looking for column 1,#from element 1 on
#get quandl frannymac query names for each 50 state
for abbv in fifty_states[0][1][2:]:
#print('FMAC/HPI_'+str(abbv))
所以我在以下步骤中遇到了问题:
#get 50 states using pandas read html from wikipedia
fifty_states = pd.read_html('https://en.wikipedia.org /wiki/List_of_states_and_territories_of_the_United_States')
##print(fifty_states[0][1]) #first data frame is index 0, #looking for column 1,#from element 1 on
我尝试了不同的方法来获得缩写但不起作用
for abbv in fifty_states[0][1][2:]:
#print('FMAC/HPI_'+str(abbv))
for abbv in fifty_states[0][1][1:]:
#print('FMAC/HPI_'+str(abbv))
总是Keyerror:0
我只需要执行此步骤,并获得以下输出:
FMAC/HPI_AL,
FMAC/HPI_AK,
FMAC/HPI_AZ,
FMAC/HPI_AR,
FMAC/HPI_CA,
FMAC/HPI_CO,
FMAC/HPI_CT,
FMAC/HPI_DE,
FMAC/HPI_FL,
FMAC/HPI_GA,
FMAC/HPI_HI,
FMAC/HPI_ID,
FMAC/HPI_IL,
FMAC/HPI_IN,
FMAC/HPI_IA,
FMAC/HPI_KS,
FMAC/HPI_KY,
FMAC/HPI_LA,
FMAC/HPI_ME
针对美国的50个州,然后根据这些数据进行数据分析。
有人可以告诉我我做错了什么吗?欢呼
答案 0 :(得分:0)
请注意,fifty_states
是数据框的列表,其中填充了
源页面中表的内容。
其中第一个是美国各州的表格(在 fifty_states 中的索引 0 中)。
如果您不知道DataFrame中的列名(例如 df ), 要从中获取列1(数字形式 0 ),请运行:
df.iloc[:, 1]
因此,由于我们希望从 fifty_states [0] 中访问此列,所以运行:
fifty_states[0].iloc[:, 1]
您的代码失败,因为您尝试将 [1] 应用于此DataFrame, 但是此DataFrame没有名为 1 的列。
请注意,例如fifty_states[0][('Cities', 'Capital')]
给出正确的结果,
因为:
然后回到您的代码,运行:
for abbv in fifty_states[0].iloc[:, 1]:
print('FMAC/HPI_' + str(abbv))
请注意,不需要 [2:] 。您可能想跳过2个初始行
HTML标记 如果要将这些字符串作为列表,以备将来使用,则代码可以是: 的名称,其中包含列名,
但在 Pandas 中,它们实际上保留在MultiIndex的列中,
这样就可以获取所有值,而无需跳过任何内容。
your_list = ('FMAC/HPI_' + fifty_states[0].iloc[:, 1]).tolist()