这个错误的来源是什么:python

这个错误的来源是什么:python,python,pandas,Python,Pandas,这是为了使用人口普查.csv中的数据来找出2010-2015年人口绝对变化最大的县(POPESTIMATES),我只想找出每一年/每一列的最大值和最小值的绝对值之间的差异。您必须返回一个字符串。另外,[(人口普查_df['SUMLEV']==50)]意味着只有县被设置为50时才被采用。但是代码给出了一个以 KeyError:“['POPESTIAMTE2010''POPESTIAMTE2011''POPESTIAMTE2012' “POPESTIAMTE2013”\n“POPESTIAMTE20

这是为了使用人口普查.csv中的数据来找出2010-2015年人口绝对变化最大的县(POPESTIMATES),我只想找出每一年/每一列的最大值和最小值的绝对值之间的差异。您必须返回一个字符串。另外,
[(人口普查_df['SUMLEV']==50)]
意味着只有县被设置为50时才被采用。但是代码给出了一个以

KeyError:“['POPESTIAMTE2010''POPESTIAMTE2011''POPESTIAMTE2012' “POPESTIAMTE2013”\n“POPESTIAMTE2014”“POPESTIAMTE2015”]不在索引中


我是否索引了错误的数据结构?我对数据科学和编码非常陌生。

我认为代码中的列名有输入错误。模式是“POPESTIMATE201”,而不是“POPESTIMATE201”

任何缩短代码的帮助都将不胜感激。下面是有效的代码-

import pandas as pd
census_df = pd.read_csv('census.csv')
#census_df.head()

def answer_seven():

    census_df_1 = census_df[(census_df['SUMLEV'] == 50)].set_index('CTYNAME')
    census_df_1['highest'] = census_df_1[['POPESTIAMTE2010','POPESTIAMTE2011','POPESTIAMTE2012','POPESTIAMTE2013','POPESTIAMTE2014','POPESTIAMTE2015']].max()
    census_df_1['lowest'] =census_df_1[['POPESTIAMTE2010','POPESTIAMTE2011','POPESTIAMTE2012','POPESTIAMTE2013','POPESTIAMTE2014','POPESTIAMTE2015']].min()
    x = abs(census_df_1['highest'] - census_df_1['lowest']).tolist()
    return x[0] 
answer_seven() 

这看起来很奇怪
'POPESTIAMTE2013'\n
由于某种原因,您的列名列表中嵌入了一行新行,请发布
print(census_df.columns.tolist())
的输出,以确认您的列列表是正确的valid@EdChum谢谢,我正在逐渐学习如何使用这个网站。因为我是新手(没有学分),所以无法插入数据帧的照片。我只是返回并删除了保存函数的notepad++中的空格,然后再次运行它。这次错误只显示了“POPEXTIMATE2013”的“\n”字符。我很确定,它不是来自实现(我编写它的方式)。谢谢。对不起,这是同样的错误,只是没有仔细看。请忽略这个问题。当然,您需要将更多参数传递给,数据是如何分离的?头球呢?。请包含输入文件的第一行,以便我们可以调试该问题。@Rafa,谢谢。col名称列表对于此条目太长,在此处发布它有什么好方法?
census_df = pd.read_csv('census.csv')
def answer_seven():
    cdf = census_df[(census_df['SUMLEV'] == 50)].set_index('CTYNAME')
    columns = ['POPESTIMATE2010', 'POPESTIMATE2011', 'POPESTIMATE2012', 'POPESTIMATE2013', 'POPESTIMATE2014', 'POPESTIMATE2015']
    cdf['big'] = cdf[columns].max(axis =1)
    cdf['sml'] = cdf[columns].min(axis =1)
    cdf['change'] = cdf[['big']].sub(cdf['sml'], axis=0)
return cdf['change'].idxmax()