回来 'not in the index'
Getting back 'not in the index'
这是来自 DataCamp 的练习,在网站和 PyCharm Interpreter
上都能正常工作
# Pre-defined lists
names = ['United States', 'Australia', 'Japan', 'India', 'Russia', 'Morocco', 'Egypt']
dr = [True, False, False, False, True, True, True]
cpc = [809, 731, 588, 18, 200, 70, 45]
import pandas as pd
# Create dictionary my_dict with three key:value pairs: my_dict
my_dict = {"country": names, "drives_right": dr, "cars_per_cap": cpc}
# Build a DataFrame cars from my_dict: cars
cars = pd.DataFrame(my_dict)
# Print cars
print(cars)
print("\n*Using 'loc':")
print(cars.loc[[1]])
就在这里休息
print(cars.loc[[names]])
*说 'names' 不在索引中
我相信你想做的是filter by column value(s)
。您可以简单地执行 [1]
或设置数据框的索引,如 [2]
.
[1]
按列值筛选
print(cars[cars['country'] == names])
# or print(cars[cars['country'].isin(names)])
[2]
索引数据名
cars_indexed = cars.set_index("country")
cars_indexed.loc[names]
结果
[result 1]
[result 2]
p.s。
pandas loc
主要基于标签
阅读 documentation,您可以看到 df.loc
将从索引中访问元素。在您的例子中,索引是 0,1,...,6
。这就是它给您错误的原因 - 索引根本没有这些元素。如果您要将索引定义为字符串数组,就像它们在文档中所做的那样(我建议您查看示例),您可以获得具有这些字符串索引的行。
DataFrame.loc
用于按标签select 索引或列header。 names
是列值。如果你想 select 值在列表中的行,你可以尝试 isin
使用布尔掩码。
print(cars[cars['country'].isin(names)])
这是来自 DataCamp 的练习,在网站和 PyCharm Interpreter
上都能正常工作# Pre-defined lists
names = ['United States', 'Australia', 'Japan', 'India', 'Russia', 'Morocco', 'Egypt']
dr = [True, False, False, False, True, True, True]
cpc = [809, 731, 588, 18, 200, 70, 45]
import pandas as pd
# Create dictionary my_dict with three key:value pairs: my_dict
my_dict = {"country": names, "drives_right": dr, "cars_per_cap": cpc}
# Build a DataFrame cars from my_dict: cars
cars = pd.DataFrame(my_dict)
# Print cars
print(cars)
print("\n*Using 'loc':")
print(cars.loc[[1]])
就在这里休息
print(cars.loc[[names]])
*说 'names' 不在索引中
我相信你想做的是filter by column value(s)
。您可以简单地执行 [1]
或设置数据框的索引,如 [2]
.
[1]
按列值筛选
print(cars[cars['country'] == names])
# or print(cars[cars['country'].isin(names)])
[2]
索引数据名
cars_indexed = cars.set_index("country")
cars_indexed.loc[names]
结果
[result 1]
[result 2]
p.s。
pandas loc
主要基于标签
阅读 documentation,您可以看到 df.loc
将从索引中访问元素。在您的例子中,索引是 0,1,...,6
。这就是它给您错误的原因 - 索引根本没有这些元素。如果您要将索引定义为字符串数组,就像它们在文档中所做的那样(我建议您查看示例),您可以获得具有这些字符串索引的行。
DataFrame.loc
用于按标签select 索引或列header。 names
是列值。如果你想 select 值在列表中的行,你可以尝试 isin
使用布尔掩码。
print(cars[cars['country'].isin(names)])