【问题标题】:Check if a value in one column is in a list in another column using pd.isin()使用 pd.isin() 检查一列中的值是否在另一列的列表中
【发布时间】:2021-10-29 15:42:21
【问题描述】:

我有一个如下的DataFrame

df = pd.DataFrame({
    'x' : range(0,5),
    'y' : [[0,2],[3,4],[2,3],[3,4],[7,9]]
})

我想测试 x 的每一行,如果值在 y 列指定的列表中

df[df.x.isin(df.y)]

所以我最终会得到:

不知道为什么 isin() 在这种情况下不起作用

【问题讨论】:

    标签: python pandas isin


    【解决方案1】:

    df.x.isin(df.y) 检查每个元素 x,例如0,等于df.y 的一些值,例如是 0 等于 [0,2],否,等等。

    有了这个,你可以做一个 for 循环:

    df[ [x in y for x,y in zip(df['x'], df['y'])] ]
    

    【讨论】:

      【解决方案2】:

      让我们试试explode 索引loc

      out = df.loc[df.explode('y').query('x==y').index.unique()]
      Out[217]: 
         x       y
      0  0  [0, 2]
      2  2  [2, 3]
      3  3  [3, 4]
      

      【讨论】:

      • @user17242583 啊,谢谢老兄
      猜你喜欢
      • 2022-12-12
      • 1970-01-01
      • 1970-01-01
      • 2019-12-11
      • 2014-01-30
      • 1970-01-01
      • 1970-01-01
      • 2019-05-26
      • 1970-01-01
      相关资源
      最近更新 更多