尝试使用 .loc 从 Pandas 数据帧中提取特定 columns/rows 时出错

Error when trying to extract specific columns/rows from Pandas dataframe using .loc

我一直在 datacamp 在线 类 学习 Python 数据科学,但是当我使用我在那里使用的相同代码并 运行 在我的计算机上使用时(如反对他们的网站),我收到了我不明白的错误。我正在使用 Spyder 和 Python 3.6.

我的代码的目标是导入一个 .csv 文件,从 pandas 数据框中提取两行两列并打印出结果。从那里我可以在直方图上绘制数据,然后展开它。但首先,我必须掌握工作的基础知识。我一直使用的代码是:

import pandas as pd

df = pd.read_csv('drinks.csv')
df1 = df.loc[['USA', 'Germany'], ['country', 'beer_servings']]
print(df1)

我得到的错误是:

KeyError: "None of [['USA', 'Germany']] are in the [index]"

万一有人想看我用的数据,我用来下载的link是:https://github.com/fivethirtyeight/data/blob/master/alcohol-consumption/drinks.csv

即使我尽可能简单地只提取一行,我仍然会遇到相同的错误(如下所示)。如果我尝试提取单个列,也会发生同样的事情。

import pandas as pd

df = pd.read_csv('drinks.csv')
df1 = df.loc[['USA']]
print(df1)

错误是:

KeyError: "None of [['USA']] are in the [index]"

有什么我想念的吗?

https://www.shanelynn.ie/select-pandas-dataframe-rows-and-columns-using-iloc-loc-and-ix/

这是我用来尝试了解我做错了什么的网站,但我终究无法弄清楚我错过了什么。我知道这可能是一个非常微不足道的问题,但是如果您有任何建议,我很乐意听取,在此先感谢您的帮助!

你可以这样做:

df1 = df.loc[df['country'].isin(['USA', 'Germany']), ['country', 'beer_servings']]

或者,您可以先 set_index 让现有代码正常工作。

df = df.set_index('country')

您需要先将国家列设置为索引:

import pandas as pd

df = pd.read_csv('drinks.csv').set_index('country')
df1 = df.loc[['USA', 'Germany'], 'beer_servings']
print(df1)

输出:

country
USA        249
Germany    346
Name: beer_servings, dtype: int64

尝试:

>>> df.loc[df['country'].isin(['USA', 'Germany']), ['country', 'beer_servings']]
     country  beer_servings
65   Germany            346
184      USA            249