Pandas:根据列的值对数据帧进行切片



我必须根据Dataframe的某一列中出现的值(从txt导入(对Dataframe进行切片。这就是我所拥有的:

>df
col1 col2
a    1
b    2
c    3
d    4
>'mytxt.txt'
2
3

这就是我需要的:每当col2中的值不在mytext.txt中的值之间时,就删除行

预期结果必须是:

>df
col1 col2
b    2
c    3

我试过了:

values = pd.read_csv('mytxt.txt', header=None)
df = df.col2.isin(values)

但它不起作用。非常感谢您的帮助,谢谢!

当您阅读values时,我会将其作为一个系列,然后将其转换为一个集合,这将更有效地进行查找:

values = pd.read_csv('mytxt.txt', header=None, squeeze=True)
values = set(values.tolist())

然后切片将工作:

>>> df[df.col2.isin(values)]
col1  col2
1    b     2
2    c     3

实际情况是,您将values作为DataFrame而不是Series读取,因此.isin方法的行为与您预期的不一样。

最新更新