【问题标题】:Pandas: slice Dataframe according to values of a column熊猫:根据列的值对数据框进行切片
【发布时间】:2021-02-27 21:57:46
【问题描述】:

我必须根据我的 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)

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

【问题讨论】:

    标签: python pandas dataframe import slice


    【解决方案1】:

    当你阅读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 方法的行为与您预期的不同。

    【讨论】:

    • 很高兴听到这个消息。如果这解决了您的问题,请将其标记为已接受的答案
    猜你喜欢
    • 2015-05-11
    • 2015-10-30
    • 2022-11-14
    • 2018-03-29
    • 2017-08-13
    • 1970-01-01
    • 1970-01-01
    • 2021-02-21
    • 2014-12-29
    相关资源
    最近更新 更多