【问题标题】:is it possible to do the equivalent of SQL nested requests in pandas dataframe?是否可以在 pandas 数据框中执行相当于 SQL 嵌套请求的操作?
【发布时间】:2019-02-01 14:26:28
【问题描述】:

可以在 Pandas 数据帧中执行此 SQL 代码的等效操作

delete * from tableA where id in (select id from tableB)

【问题讨论】:

    标签: pandas dataframe equivalent


    【解决方案1】:

    不知道你的 DataFrames 的确切结构,但应该这样做:

    # Setup dummy data:
    import pandas as pd
    tableA = pd.DataFrame(data={"id":[1, 2, 3]}) 
    tableB = pd.DataFrame(data={"id":[3, 4, 5]})
    
    # Solution:
    tableA = tableA[~tableA["id"].isin(tableB["id"])]
    

    【讨论】:

      【解决方案2】:

      是的,有一个等价物。你可以试试这个:

      df2.drop(df2.loc[df2['id'].isin(df1['id'])].index)
      

      例如:

      df1 = pd.DataFrame({'id': [1,2,3,4], 'value': [2,3,4,5]})
      df2 = pd.DataFrame({'id': [1,2,3,4, 5,6,7], 'col': [2,3,4,5,6,7,8]})
      print(df2.drop(df2.loc[df2['id'].isin(df1['id'])].index))
      

      输出:

         id  col
      4   5    6
      5   6    7
      6   7    8
      

      我只是随机选取了示例数据框。此示例使用 df1(或 TableB)从 df2(您可以说是 TableA)中删除值

      【讨论】:

        猜你喜欢
        • 2020-10-18
        • 2015-10-11
        • 1970-01-01
        • 2021-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-12
        • 2014-03-31
        相关资源
        最近更新 更多