繁体   English   中英

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

[英]Pandas: slice Dataframe according to values of a column

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

>df
col1 col2
 a    1
 b    2
 c    3
 d    4

>'mytxt.txt'
2
3

这就是我需要的:只要col2中的值不在 mytxt.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 而不是系列读取,因此.isin方法的行为不符合您的预期。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM