我无法in使用预定义的项目列表执行标准操作。我正在寻找做这样的事情:
# Construct a simple example frame
from datatable import *
df = Frame(V1=['A','B','C','D'], V2=[1,2,3,4])
# Filter frame to a list of items (THIS DOES NOT WORK)
items = ['A','B']
df[f.V1 in items,:]
Run Code Online (Sandbox Code Playgroud)
此示例导致错误:
TypeError: A boolean value cannot be used as a row selector
不幸的是,似乎没有用于in操作的内置对象。我想使用类似于%in%R 语言原生的运算符之类的东西。有没有什么方法可以在python中完成这个?
我可以通过使用多个“等于”运算符来采用这种方法,但是当您要考虑大量项目时,这很不方便:
df[(f.V1 == 'A') | (f.V1 == 'B'),:]
Run Code Online (Sandbox Code Playgroud)
数据表 0.10.1
蟒蛇 3.6
如何过滤掉某个列中的值包含在列表中的行?
基本上这是我正在使用的代码:
import datatable as dt
sfr = dt.fread(os.path.join(dirName, 'Results.csv'))
sfr
Out[25]:
| ioid itemtype date itemid tid value
-------- + ---------- -------- -------- ------- ------------ -------
0 | 1 1 7-1-2022 9015 531 0.0283
1 | 1 1 7-1-2022 9015 532 0.0071
2 | 1 1 7-1-2022 9016 534 0.0065
3 | 1 1 7-1-2022 9017 1018 0.0005
Run Code Online (Sandbox Code Playgroud)
我正在尝试执行以下操作
ids = [9016, 9017]
sft[dt.f.itemid.isin(ids)]
Run Code Online (Sandbox Code Playgroud)
但是,我无法使语法起作用。
期望的输出是:
| ioid itemtype date itemid tid value …Run Code Online (Sandbox Code Playgroud)