【问题标题】:IF series A contains values of series B THENIF 系列 A 包含系列 B 的值 THEN
【发布时间】:2019-05-10 20:53:42
【问题描述】:

我在 pandas - python 中有两个系列:

A = pd.Series (["W1","W2","W3","W4"])
B = pd.Series (["W1","W2","W3"])

一个while循环迭代A系列:

while j < len(A): 

现在我想要某种 IF 语句,当 A 中的实际值 j 在系列 B 中也是如此,然后打印“It its in B”:

IF A[j] == B: 
   print("It its in B")

我真的在尝试使用 A.isin() 几个小时,但我没有成功。

感谢即将到来的支持!

【问题讨论】:

    标签: python python-3.x pandas series


    【解决方案1】:

    通常不建议在 Pandas 中使用显式 Python 级循环。更惯用的方法是将 pd.Series.isin 与布尔索引一起使用:

    print(A[A.isin(B)])
    
    0    W1
    1    W2
    2    W3
    dtype: object
    

    然后根据需要进行迭代;

    res = A[A.isin(B)]
    for val in res.values:
        print(f'{val} is in B')
    

    可以在每个循环中使用带有if 语句的显式for 循环。使用这种方法,建议使用 set 进行 O(1) 查找:

    B_set = set(B)
    for i in range(len(A)):
        val = A.iat[i]
        if val in B_set:
            print(f'{val} is in B')
    
    W1 is in B
    W2 is in B
    W3 is in B
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-04
      • 1970-01-01
      • 2021-07-01
      • 2021-11-20
      • 2021-07-21
      • 2018-11-16
      • 1970-01-01
      • 2019-06-13
      相关资源
      最近更新 更多