【问题标题】:Pandas compare 1 columns values to another dataframe column, find matching rowsPandas 将 1 列值与另一个数据框列进行比较,找到匹配的行
【发布时间】:2019-01-23 22:17:10
【问题描述】:

我有一个数据库,我引入了一个事件和警报的 SQL 表 (df1),我有一个警报代码和属性 (df2) 的 txt 文件要注意。想要使用 df2 中的 1 列值,每个值都需要与 df1 中的整个列值进行交叉检查,并将匹配的任何行的整行输出到另一个数据帧 df3。

df1     A   B   C   D
0     100  20   1   1
1     101  30   1   1
2     102  21   2   3
3     103  15   2   3
4     104  40   2   3

df2     0   1   2   3   4
0      21   2   2   3   3
1      40   0 NaN NaN NaN

将 df1 中 B 列与 df2 列 0 的任何值匹配的整行输出到 df3。

df3     A   B   C   D
0     102  21   2   3
1     104  40   2   3

我能够使用以下方法获得单一结果:

df1[df1['B'] == df2.iloc[0,0]]

但我需要一些能在更大范围内做到这一点的东西。

【问题讨论】:

    标签: python pandas python-2.7 dataframe


    【解决方案1】:

    方法一:merge

    B0 上使用merge。然后只选择df1

    df1.merge(df2, left_on='B', right_on='0')[df1.columns]
    
         A   B  C  D
    0  102  21  2  3
    1  104  40  2  3
    

    方法二:loc

    或者使用locdf1 中查找行,其中Bdf20 中使用.isin 匹配:

    df1.loc[df1.B.isin(df2['0'])]
    
         A   B  C  D
    2  102  21  2  3
    4  104  40  2  3
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-14
      • 2020-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-20
      相关资源
      最近更新 更多