我是python / pandas的新手,正试图遍历数据框的一列并打印所有美国州的缩写(以便从Quandl获取数据)。我不知道为什么我不能按数字选择列,并且for循环不会按名称遍历该列。
fifty_states
数据帧列表,fifty_states[0]
是我想要的特定数据帧(50行x 13列)。 print(fifty_states[0]['Abbreviation'])
提供了我感兴趣的列,但是我的for循环必须存在缺陷,因为它仅返回“ FMAC / HPI_Abbreviation”。
fifty_states=pd.read_html('https://simple.wikipedia.org/wiki/List_of_U.S._states')
for abbv in fifty_states[0]['Abbreviation']:
print("FMAC/HPI_"+str(abbv))
我尝试按数字引用列,即fifty_states[0][0]
,但是无论列号如何,都会返回我尝试的列号的KeyError,例如,在这里它会显示'KeyError:0'。 / p>
我期望这样的输出有50行:
FMAC/HPI_AL
FMAC/HPI_AK
FMAC/HPI_AR
...
FMAC/HPI_WV
FMAC/HPI_WY
答案 0 :(得分:0)
for row in fifty_states[0].iteritems():
print(row)
尽管人们告诉你,遍历数据框是一个坏主意。
答案 1 :(得分:0)
您可以使用for循环在列上进行迭代:
for i in fifty_states['Abbreviation']:
print(i)
答案 2 :(得分:0)
我认为您应该将header = 0
添加到read_html。这将告诉熊猫读取第一行作为DataFrame的列标签。否则,DataFrame列将不会被标记为“缩写”,这就是为什么您遇到关键错误的原因。如果您给pd.read_html标头参数,您将可以使用其余代码而无需更改。
fifty_states=pd.read_html('https://simple.wikipedia.org/wiki/List_of_U.S._states', header=0)
for abbv in fifty_states[0]['Abbreviation']:
print("FMAC/HPI_"+str(abbv))