如何在熊猫中的数据框的列上进行迭代,无法通过数字选择列

时间:2019-05-22 14:42:04

标签: python pandas spyder

我是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

3 个答案:

答案 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))