gpt4 book ai didi

python - 错误, 'only list-like objects are allowed to be passed to isin(), you passed a [int]'

转载 作者:行者123 更新时间:2023-11-28 17:13:35 27 4
gpt4 key购买 nike

以下采用的代码仅用于示例目的:

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)]

这里可以看出传递了一个列表(即value_list)。如果我不想传递一个列表而只想传递一个整数(即报告列中的 24 以找到其对应的行),那么理想的方法是什么。我尝试这样做,但它实际上不起作用:

df[df.reports.isin(24)]

错误是:只允许将类似列表的对象传递给 isin(),你传递了一个 [int]。

此外,我如何根据报告 24(即 Molly)找到相应的“名称”

最佳答案

只需使用 bool 索引:

>>> df
name reports year
Cochice Jason 4 2012
Pima Molly 24 2012
Santa Cruz Tina 31 2013
Maricopa Jake 2 2014
Yuma Amy 3 2014
>>> df[df.reports == 24]
name reports year
Pima Molly 24 2012

可以对单元素列表使用.isin:

>>> df[df.reports.isin([24])]
name reports year
Pima Molly 24 2012

但是 bool 索引选项是您通常会看到的。

如果您有一个 数据框(假设超过 10,000 行)和一个更复杂的 bool 表达式,您可以使用 df.query 高效地完成此操作:

>>> df.query("reports==24 or name == 'Jason'")
name reports year
Cochice Jason 4 2012
Pima Molly 24 2012

如果您有可用的 numexpr 引擎,这将是快速且节省内存的。

关于python - 错误, 'only list-like objects are allowed to be passed to isin(), you passed a [int]',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45699651/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com