【问题标题】:in pandas how to iterate through two data frames based on same ID在 Pandas 中,如何基于相同的 ID 遍历两个数据帧
【发布时间】:2019-02-26 02:44:15
【问题描述】:

熊猫

我有两个数据框并想做一个嵌套循环。

我想迭代 df1 中的每一行并选择 col1 (id) 和 col2。

然后,它将获取 ID 并遍历 df2 并检查该行是否具有相同的 ID,然后将 df1 中的列与 df2 中的列进行比较

如果 df1 中的 col2 匹配 df2 中的 col3,它将返回 True 并将其附加到 df1 的行。

df1
col1    col2   col3   col3
 01      A     S      True
 02      D     F      True
 03      Z     B      False

df2
col1    col2   col3
 01      A      A
 02      B      A
 02      D      F
 02      C      D
 02      D      V
 03      X      W
 03      E      X

【问题讨论】:

    标签: python pandas for-loop dataframe if-statement


    【解决方案1】:

    设置

    a = df1[['col1', 'col2']].values
    b = df2[['col1', 'col2']].values
    

    通过anyall 使用广播:

    (a == b[:, None]).any(0).all(1)
    

    array([ True,  True, False])
    

    【讨论】:

    • 对不起。如果 df1 有两列以上怎么办?
    【解决方案2】:

    IIUC 使用 tupleisin

    df1[['col1','col2']].apply(tuple,1).isin(df2[['col1','col3']].apply(tuple,1))
    Out[1051]: 
    0     True
    1     True
    2    False
    dtype: bool
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-23
      • 2018-02-22
      • 2019-05-25
      • 2019-01-25
      • 1970-01-01
      • 2020-01-25
      • 2021-06-02
      • 2019-02-26
      相关资源
      最近更新 更多