以下采用的代码仅用于示例目的:
data = {'name': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'],
'year': [2012, 2012, 2013, 2014, 2014],
'reports': [4, 24, 31, 2, 3]}
df = pd.DataFrame(data, index = ['Cochice', 'Pima', 'Santa Cruz', 'Maricopa', 'Yuma'])
df = pd.DataFrame(data, index = ['Cochice', 'Pima', 'Santa Cruz', 'Maricopa', 'Yuma'])
value_list = ['Tina', 'Molly', 'Jason']
df[df.name.isin(value_list)]
在这里,可以看到一个列表(即值列表)已经通过。如果我不想传递一个列表,只想传递一个整数(即,在reports列中传递24以查找其对应的行),那么理想的方式是什么。我试过这么做,但实际上没用:
df[df.reports.isin(24)]
错误如下:只有类列表的对象才允许传递给isin(),您传递了一个[int]。
另外,我如何根据24号报告(即Molly)找到相应的“名称”
只需使用布尔索引:
您可以对单个元素列表使用
.isin
:但是布尔索引选项是您通常会看到的。
如果您有一个大的数据帧(比方说,超过10000行)和一个更复杂的布尔表达式,那么您可以使用
df.query
高效地执行此操作:如果您有可用的
numexpr
引擎,这将是快速和内存效率高的。相关问题 更多 >
编程相关推荐