question how to deal with KeyError: 0 or KeyError: 1 etc
question how to deal with KeyError: 0 or KeyError: 1 etc
我是 python 和这个数据科学世界的新手,我正在尝试使用不同的数据集。
在这种情况下,我使用的是 quandl 的房价指数,但不幸的是,当我需要从 wiki 页面获取缩写名称时,我总是遇到相同的错误 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 个州,然后根据这些数据进行数据分析。
谁能告诉我我做错了什么?干杯
注意 fifty_states
是一个 list DataFrames,填充了
来自源页面的 table 的内容。
它们中的第一个(在 fifty_states 中的索引 0 处)是美国各州的 table .
如果您不知道 DataFrame 中的列名(例如 df),
从中获取第 1 列(计数形式 0),运行:
df.iloc[:, 1]
因此,由于我们希望此列来自 fifty_states[0],运行:
fifty_states[0].iloc[:, 1]
您的代码失败,因为您试图将 [1] 应用于此 DataFrame,
但是这个 DataFrame 没有名为 1.
的列
请注意,例如fifty_states[0][('Cities', 'Capital')]
给出正确的结果,
因为:
- 此 DataFrame 在列上有一个 MultiIndex,
- 其中一列在第一个 MultiIndex 级别有 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()
我是 python 和这个数据科学世界的新手,我正在尝试使用不同的数据集。
在这种情况下,我使用的是 quandl 的房价指数,但不幸的是,当我需要从 wiki 页面获取缩写名称时,我总是遇到相同的错误 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 个州,然后根据这些数据进行数据分析。
谁能告诉我我做错了什么?干杯
注意 fifty_states
是一个 list DataFrames,填充了
来自源页面的 table 的内容。
它们中的第一个(在 fifty_states 中的索引 0 处)是美国各州的 table .
如果您不知道 DataFrame 中的列名(例如 df), 从中获取第 1 列(计数形式 0),运行:
df.iloc[:, 1]
因此,由于我们希望此列来自 fifty_states[0],运行:
fifty_states[0].iloc[:, 1]
您的代码失败,因为您试图将 [1] 应用于此 DataFrame, 但是这个 DataFrame 没有名为 1.
的列请注意,例如fifty_states[0][('Cities', 'Capital')]
给出正确的结果,
因为:
- 此 DataFrame 在列上有一个 MultiIndex,
- 其中一列在第一个 MultiIndex 级别有 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()