【问题标题】:How to find value of one column in Dataframe in another Dataframe [duplicate]如何在另一个数据框中找到数据框中一列的值[重复]
【发布时间】:2018-07-18 14:02:41
【问题描述】:

我有两个数据框,即:

df1:

col1     col2
A1         20
B1         22         
A2         23
B2         24

df2:

Column1     Column2
A1          20
A2          23
A3          25 
A4          28
B1          22
B2          24
B3          27
B4          33

现在,我想从 df2 返回所有值为 df1 的行

因此,输出应该是:

df2:

A1         20
B1         22         
A2         23
B2         24

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    你可以使用合并

    df2.merge(df1,left_on=['Column1','Column2'],right_on=['col1','col2'],how='left').dropna()[df2.columns]
    Out[446]: 
      Column1  Column2
    0      A1       20
    1      A2       23
    4      B1       22
    5      B2       24
    

    或者使用tupleisin

    df2[df2.apply(tuple,1).isin(df1.apply(tuple,1))]
    Out[453]: 
      Column1  Column2
    0      A1       20
    1      A2       23
    4      B1       22
    5      B2       24
    

    【讨论】:

      【解决方案2】:

      您需要具有相同的列名才能执行完整的内部合并。

      df1.rename(columns=dict(zip(df1.columns, df2.columns))).merge(df2)
      

      输出:

         Column1  Column2
      0   A1       20
      1   B1       22
      2   A2       23
      3   B2       24
      

      【讨论】:

      • 如果两个帧的长度不匹配,这会起作用吗?
      • 是的,它会起作用的。 @MarceloBD
      【解决方案3】:

      你可以使用合并:

      import pandas as pd
      df1 = pd.DataFrame({'col1': ['A1', 'B1', 'A2', 'B2'], 'col2': [20, 22, 23, 24]})
      df2 = pd.DataFrame({'Column1': ['A1', 'A2', 'A3', 'A4', 'B1', 'B2', 'B3', 'B4'], 'Column2': [20, 23, 25, 28, 22, 24, 27, 33]})
      df3 = df1.merge(df2, left_on='col1', right_on='Column1', how='left')
      df4 = df3[['col1','Column2']]
      print(df4)
      >    col1  Column2
        0   A1       20
        1   B1       22
        2   A2       23
        3   B2       24
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-08-01
        • 1970-01-01
        • 2022-11-23
        • 1970-01-01
        • 2020-10-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多