Python 由于csv文件中缺少标签而导致错误

Python 由于csv文件中缺少标签而导致错误,python,pandas,Python,Pandas,我正在看Choropleth教程 当我试图运行它时,我得到了以下行df=df.ix[iso3_代码]的错误。dropna(): AttributeError:'DataFrame'对象没有属性'ix' 在熊猫中,ix似乎已被弃用 然后,我将行更改为df=df.loc[iso3\u code].dropna(),但出现以下错误: KeyError:“不再支持传递列表喜欢。loc或[]以及任何缺少的标签 我如何解决这个问题 其他信息 我尝试了df=df.loc[:,iso3_code].drop

我正在看Choropleth教程

当我试图运行它时,我得到了以下行
df=df.ix[iso3_代码]的错误。dropna()

AttributeError:'DataFrame'对象没有属性'ix'
在熊猫中,
ix
似乎已被弃用

然后,我将行更改为
df=df.loc[iso3\u code].dropna()
,但出现以下错误:

KeyError:“不再支持传递列表喜欢。loc或[]以及任何缺少的标签
我如何解决这个问题

其他信息

我尝试了
df=df.loc[:,iso3_code].dropna()
,但它给了我以下错误:

keyrerror:[Index(['AND','ARE','AFG','ATG','ANT'],\n dtype='object',length=252)]都不在[列]中
也许
loc
对于过滤掉非国家和缺少的值没有用处。我现在怎么做

完整代码

将matplotlib导入为mpl
将matplotlib.pyplot作为plt导入
将numpy作为np导入
作为pd进口熊猫
进口弹头
从geonamescache导入geonamescache
从matplotlib.patches导入多边形
从matplotlib.collections导入PatchCollection
从mpl_toolkits.basemap导入basemap
文件名='csv/API_AG.LND.FRST.ZS_DS2_en_csv_v2_988532/API_AG.LND.FRST.ZS_DS2_en_csv_v2_988532.csv'
shapefile='shapes/countries/countries/ne\u 10m\u admin\u 0\u countries\u lakes'
num_colors=9
年份=‘2012’
cols=['国家名称','国家代码',年份]
title=f‘森林面积占土地面积的百分比,采用{格式(年)}’
imgfile=f'img{slug.slug(title)}.png'
描述=“”
森林面积是指自然或人工种植的至少5米长的树木下的土地,无论是否有生产力,
并且不包括农业生产系统(例如,水果种植园和农林系统)中的树木链
以及城市公园和花园中的树木。没有数据的国家以灰色显示。
资料来源:世界银行-世界银行.org;作者:Ramiro Gómez-Ramiro.org
''.strip()
gc=GeonamesCache()
iso3_代码=列表(gc.get_数据集_按_键(gc.get_countries(),'iso3').keys())
df=pd.read\u csv(文件名,skiprows=4,usecols=cols)
df.set_索引('国家代码',原地=真)
df=df.loc[:,iso3_代码].dropna()#过滤掉非国家和缺少的值
值=df[年]
cm=plt.get_cmap('绿色')
scheme=[cm(i/num\u颜色)表示范围内的i(num\u颜色)]
bin=np.linspace(values.min()、values.max()、num\u颜色)
df['bin']=np.数字化(值、bin)-1
df.sort_值('bin',升序=False)。头(10)
df['bin']=np.数字化(值、bin)-1
df.sort_值('bin',升序=False)。头(10)
打印(f'可用样式:{plt.style.Available}')
mpl.style.use('map')
图=plt.图(图尺寸=(22,12))
ax=图add_子图(111,facecolor='w',frame_on=False)
图suptitle(f‘森林面积占{year}土地面积的百分比’,fontsize=30,y=0.95)
m=底图(lon_0=0,投影='robin')
m、 drawmapboundary(color='w')
m、 readshapefile(shapefile,'单位',颜色='#444444',线宽=0.2)
对于信息,请在zip中创建形状(m.units\u info,m.units):
iso3=信息['ADM0_A3']
如果iso3不在df.index中:
颜色='#dddddd'
其他:
颜色=方案[df.loc[iso3][bin']]
面片=[多边形(np.数组(形状),真)]
pc=补丁集合(补丁)
pc.\u设置\u面颜色(颜色)
ax.添加_集合(pc)
#盖住Antartica,以便在其上放置图例
ax.axhspan(0,1000*1800,facecolor='w',edgecolor='w',zorder=2)
#绘制颜色图例
ax_图例=图添加_轴([0.35,0.14,0.3,0.3],zorder=3)
cmap=mpl.colors.ListedColormap(方案)
cb=mpl.colorbar.colorbase(ax_图例,cmap=cmap,ticks=bin,boundary=bin,orientation='horizontal')
cb.ax.set_xticklabels([str(圆形(i,1))用于箱子中的i])
#设置地图页脚
plt.注释(描述,xy=(-0.8,-3.2),大小=14,xycoords=0.2)
plt.show()
完全错误

/Users/me/.pyenv/versions/3.8.1/bin/python /Users/me/PycharmProjects/ChoroplethMap/chloropleth_map.py
Traceback (most recent call last):
  File "/Users/me/PycharmProjects/ChoroplethMap/chloropleth_map.py", line 33, in <module>
    df = df.loc[:, iso3_codes].dropna()     # filter out non-countries and missing values
  File "/Users/me/.pyenv/versions/3.8.1/lib/python3.8/site-packages/pandas/core/indexing.py", line 1762, in __getitem__
    return self._getitem_tuple(key)
  File "/Users/me/.pyenv/versions/3.8.1/lib/python3.8/site-packages/pandas/core/indexing.py", line 1289, in _getitem_tuple
    retval = getattr(retval, self.name)._getitem_axis(key, axis=i)
  File "/Users/me/.pyenv/versions/3.8.1/lib/python3.8/site-packages/pandas/core/indexing.py", line 1954, in _getitem_axis
    return self._getitem_iterable(key, axis=axis)
  File "/Users/me/.pyenv/versions/3.8.1/lib/python3.8/site-packages/pandas/core/indexing.py", line 1595, in _getitem_iterable
    keyarr, indexer = self._get_listlike_indexer(key, axis, raise_missing=False)
  File "/Users/me/.pyenv/versions/3.8.1/lib/python3.8/site-packages/pandas/core/indexing.py", line 1552, in _get_listlike_indexer
    self._validate_read_indexer(
  File "/Users/me/.pyenv/versions/3.8.1/lib/python3.8/site-packages/pandas/core/indexing.py", line 1640, in _validate_read_indexer
    raise KeyError(f"None of [{key}] are in the [{axis_name}]")
KeyError: "None of [Index(['AND', 'ARE', 'AFG', 'ATG', 'AIA', 'ALB', 'ARM', 'AGO', 'ATA', 'ARG',\n       ...\n       'VUT', 'WLF', 'WSM', 'YEM', 'MYT', 'ZAF', 'ZMB', 'ZWE', 'SCG', 'ANT'],\n      dtype='object', length=252)] are in the [columns]"

/Users/me/.pyenv/versions/3.8.1/bin/python/Users/me/PycharmProjects/ChoroplethMap/chloroleth_map.py
回溯(最近一次呼叫最后一次):
文件“/Users/me/PycharmProjects/ChoroplethMap/chloroleth_map.py”,第33行,在
df=df.loc[:,iso3_代码].dropna()#过滤掉非国家和缺少的值
文件“/Users/me/.pyenv/versions/3.8.1/lib/python3.8/site packages/pandas/core/index.py”,第1762行,在__
返回self.\u getitem\u元组(键)
文件“/Users/me/.pyenv/versions/3.8.1/lib/python3.8/site packages/pandas/core/index.py”,第1289行,在_getitem_元组中
retval=getattr(retval,self.name)。\u getitem\u轴(键,轴=i)
文件“/Users/me/.pyenv/versions/3.8.1/lib/python3.8/site packages/pandas/core/index.py”,第1954行,在_getitem_轴中
返回self.\u getitem\u iterable(键,轴=轴)
文件“/Users/me/.pyenv/versions/3.8.1/lib/python3.8/site packages/pandas/core/index.py”,第1595行,在_getitem_iterable中
keyarr,indexer=self.\u获取\u列表状\u索引器(键,轴,提升\u缺失=False)
文件“/Users/me/.pyenv/versions/3.8.1/lib/python3.8/site packages/pandas/core/index.py”,第1552行,在“获取列表式索引器”中
self.\u验证\u读取\u索引器(
文件“/Users/me/.pyenv/versions/3.8.1/lib/python3.8/site packages/pandas/core/index.py”,第1640行,在_validate\u read\u indexer中
raise KeyError(f“所有[{key}]都不在[{axis_name}]中”)
KeyError:“[索引(['AND','ARE','AFG','ATG','AIA','ALB','ARM','AGO','ATA','ARG',\n…\n'VUT','WLF','WSM','YEM','MYT','ZAF','ZMB','ZWE','SCG','ANT'],\n dtype='object',length=252都不在[列]中。”
更换

df = df.loc[:, iso3_codes].dropna()

替换

df = df.loc[:, iso3_codes].dropna()


尝试
df.reindex(index=iso3\u code)
?你的意思是不是说
df=df.loc[:,iso3\u code].dropna()
?请提供一个,以及整个错误消息。使用reindex时是否会出现相同的错误?不,就我所了解的链接而言,
iso3\u code
是应该在索引中的元素列表,并且