【问题标题】:Subset pandas dataframe by overlap with another [duplicate]通过与另一个重叠的熊猫数据框子集[重复]
【发布时间】:2017-05-05 23:32:48
【问题描述】:

对于以下两个数据框:

df1 = pd.DataFrame({'name': pd.Series(["A", "B", "C"]), 'value': pd.Series([1., 2., 3.])})

     name  value
0    A    1.0
1    B    2.0
2    C    3.0

df2 = pd.DataFrame({'name': pd.Series(["A", "C", "D"]), 'value': pd.Series([1., 3., 5.])})

     name  value
0    A    1.0
1    C    3.0
2    D    5.0

我只想保留df2 中的行,其中name 列中的值与df1name 列中的值重叠,即生成以下数据框:

     name  value
0    A    1.0
1    C    3.0

我尝试了多种方法,但我是 python 和 pandas 的新手,不理解来自 R 的语法。为什么这行代码不起作用,什么会起作用?

df2[df2["name"] in df1["name"]]

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    你可以使用isin:

    print (df2[df2["name"].isin(df1["name"])])
      name  value
    0    A    1.0
    1    C    3.0
    

    numpy.intersect1d 的另一个更快的解决方案:

    val = np.intersect1d(df2["name"], df1["name"])
    print (val)
    ['A' 'C']
    
    print (df2[df2.name.isin(val)])
      name  value
    0    A    1.0
    1    C    3.0
    

    【讨论】:

      【解决方案2】:

      可能对您的实际数据有用的稍微不同的方法,您可以使用“内连接”(交集)a la SQL。如果您的列在两个数据帧中都没有重复(例如,使用一些公共键合并两个不同的数据集),则更有用

      df1 = pd.DataFrame({'name': pd.Series(["A", "B", "C"]), 'value': pd.Series([1., 2., 3.])})
      df2 = pd.DataFrame({'name': pd.Series(["A", "C", "D"]), 'value': pd.Series([1., 3., 5.])})
      
      # supposedly for the join you should be able to tell join on='<column_name>', 'name' here, 
      # but wasn't working for me.
      df1.set_index('name', inplace=True)
      df2.set_index('name', inplace=True)
      
      df1.join(df2, how='inner', rsuffix='_other')
      
      #       value  value_other
      # name                    
      # A       1.0          1.0
      # C       3.0          3.0
      

      how 更改为outer 将为您提供两者的交集,left 仅用于df1 行,right 用于df2

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-04
        • 2019-12-21
        • 2016-11-29
        • 2020-03-17
        • 1970-01-01
        相关资源
        最近更新 更多