尝试使用 .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
我一直在 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